简单排序算法:
1、冒泡排序
int[] arr = {2, 4, 5, 3, 1}; 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; } } }
2、选择排序
int[] arr = {2, 4, 5, 3, 1}; for (int i = 0; i < arr.length; i++) { for (int j = i + 1; j < arr.length; j++) { if(arr[i]>arr[j]){ int temp = arr[j]; arr[j] = arr[i]; arr[i] = temp; } } }
3、插入排序
int[] arr = {3,44,38,5,47,15,36,26,27,2,46,4,19,50,48}; int startIndex = 0 ; for (int i = 0; i < arr.length; i++) { if(arr[i]>arr[i+1]){ startIndex = i; break; } } for (int i = startIndex+1; i < arr.length; i++) { int j = i; while (j>0&&arr[j]<arr[j-1]){ int temp = arr[j]; arr[j]=arr[j-1]; arr[j-1] = temp; j--; } }
4、快速排序
public static void quickSort(int[] arr , int i , int j){
int start = i ;
int end = j ;
//递归跳出条件
if(start>end){
return;
}
//记录基准数
int baseNumber = arr[i];
while(start!=end){
//利用end,从后往前找比基准数小的数
while(true){
if(end<=start||arr[end]<baseNumber){
break;
}
end--;
}
//利用start,从前往后找比基准数大的数
while(true){
if(end<=start||arr[start]>baseNumber){
break;
}
start ++;
}
int temp = arr[start];
arr[start] = arr[end];
arr[end] = temp;
}
int temp = arr[i];
arr[i] = arr[start];
arr[start] = temp;
//递归基准数左边的数据
quickSort(arr,i,start-1);
//递归基准数右边的数据
quickSort(arr,start+1,j);
}