这里主要说一下常见的一些排序算法

先来最简单的冒泡排序

直接上代码,时间复杂度O(n^2)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class BubbleSort{
public static int[] bubbleSort(int[] arr){
if(arr==null||arr.length<2){
return ;
}
for(int i=0;i<arr.length-1;i++){
for(int j =0;j<arr.length-i-1;j++){
if(arr[j]>arr[j+1]){
int temp = arr[j];
arr[j] = arr[j+1];
arr[j+1] = temp;
}
}
}
return arr;
}
}

选择排序

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class SelectSort{
public static int[] selectSort(int[] arr){
for(int i=0;i<arr.length-1;i++){
//每轮比较的元素下标
int index = i;
int j;
//找出最小元素的下标
for(j=i+1;j<arr.length;j++){
if(arr[index]<arr[j]){
index = j;
}
}
int temp = arr[index];
arr[index] = arr[i];
arr[i] = temp;
}
}
}

插入排序

public class InsertSort{
    public static int[] insertSort(int[] arr){
        return null;
    }
}