三大基础排序算法java实现
来源:互联网 发布:外籍模特知乎 编辑:程序博客网 时间:2024/05/17 20:59
冒泡排序——(BubbleSort)
基本思想:
在要排序的一组数里,对当前还没有排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即每当两相邻的数比较后发现他们的排序与排序要求相反时,就将他们互换。
图解:
代码:
package sort.change;
public class BubbleSort {
public static void main(String[] args) {
int[] arr = {9,8,7,6,5,4,3,2,1};
print(arr);
bubbleSort(arr);
print(arr);
}
private static void bubbleSort(int[] arr) {
// TODO Auto-generated method stub
for(int i =0;i<arr.length-1;i++){
for(int j = 0;j<arr.length-1-i;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1]=temp;
}
}
}
}
private static void print(int[] arr) {
// TODO Auto-generated method stub
for(int o:arr){
System.out.print(o+" ");
}
System.out.println();
}
}
时间复杂度:O(n^2).
插入排序——直接插入排序(Straight Insertion Sort)
基本思想:
将一个记录 插入到已经排序好的有序列表中,从而得到一个新,记录数增1的有序表。即:先将序列的第一个记录看成是一个有序的子序列,然后 从第二个记录逐个进行插入,直到整个序列有序为止。
Java代码:
private static void insertSort(int[] a, int length) {
// TODO Auto-generated method stub
for(int i = 1;i<length;i++){
if(a[i]<a[i-1]){
int j = i-1;//0 3
int temp = a[i];//1 2
a[i] = a[i-1];// 7
while(temp<a[j]){
a[j+1]=a[j];
j--;
if(j<0)
break;
}
a[j+1]=temp;
}
}
for(int i =0;i<length;i++){
System.out.print(a[i]+" ");
}
}
public class InsertionSort {
public static void main(String[] args) {
int[] arr = {9,8,7,6,-1,0};
print(arr);
insortSort(arr);
print(arr);
}
private static void insortSort(int[] arr) {
// TODO Auto-generated method stub
for(int i = 1;i<arr.length;i++){
int temp = arr[i];
int position = i;
for(int j = i;j>=1&&temp<arr[j-1];j--){
arr[j] = arr[j-1];
position = j-1;
}
arr[position]= temp;
}
}
private static void print(int[] arr) {
// TODO Auto-generated method stub
for(int o:arr){
System.out.print(o+" ");
}
System.out.println();
}
}
如果碰到一个和插入元素相等的,那么插入元素把想插入的元素放到相等元素后面。所以,相等元素前后顺序是不变的,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的
时间复杂度:O(n^2).
简单选择排序(Select Sort)
简介:
基本思想:
在要排序的一组数中,选出最小或者最大的一个数与第一个位置的数进行交换;然后再剩下的数当中再找出最小或者最大的与第二个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个数比较为止。
算法:
package sort.select;
/**
* 选择排序
* @author 帅
*
*/
public class SelectSort {
public static void main(String[] args) {
int[] arr = {9,8,7,6,-1,0};
print(arr);
selectSort(arr);
print(arr);
}
private static void selectSort(int[] arr) {
// TODO Auto-generated method stub
for(int i =0;i<arr.length-1;i++){
int position = i;
for(int j = i+1;j<arr.length;j++){
if(arr[j]<arr[position]){
position=j;
}
}
int temp = arr[position];
arr[position]=arr[i];
arr[i] = temp;
}
}
private static void print(int[] arr) {
// TODO Auto-generated method stub
for(int o:arr){
System.out.print(o+" ");
}
System.out.println();
}
}
0 0
- 三大基础排序算法java实现
- js三大排序算法实现代码
- Java实现排序算法(三)
- 排序算法JAVA实现三
- JAVA实现基础排序算法
- 三大简单排序算法(java)
- java中的三大排序算法
- Java十大经典基础排序算法
- Java基础之8大排序算法
- 8大排序算法JAVA实现
- 8大排序算法的java实现
- 使用Java实现7大排序算法
- 十大排序算法(java实现)
- Java实现九大排序算法
- java实现9大排序算法
- 8大排序算法Java实现
- java实现排序 九大算法
- Java实现九大排序算法
- 异步Future模式理解及实现案例
- Android布局分析的两种方式
- C/C++之变长数组(VAL)和可伸缩型数组成员
- Red Hat 系列的Linux环境变量的修改(永久,暂时)
- RequestDispatcher的使用
- 三大基础排序算法java实现
- 购物单
- FragmentTabHost简单的主流引用
- 图片搜索比较
- 利用状态模式CSV文件序列化
- 麦子学院-Web前端开发工程师系列培训教程
- 现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行完后执行?
- ECharts使用心得总结
- 立体视觉:算法与应用(二)