快速排序
思路:
1.选定一个数,
2.用两个变量存储最左边和最右边的数,用这两个变量把小于这个数的弄到这个数左边,大于这个数的弄到这个数右边
3.左边的数和右边的数又分别用这个方法来排序
关键代码
public static void main(String[] args) {
int[] arr = {9,8,7,6,5,4,3,2,1};
quickSort(arr,0,arr.length-1);
System.out.println(Arrays.toString(arr));
}
public static void quickSort(int[] arr,int small,int big){
if(small<big){
int index = getIndex(arr,small,big);
quickSort(arr,small,index-1);
quickSort(arr,index+1,big);
}
}
public static int getIndex(int[] arr,int small,int big){
int tmp = arr[small];
while(small<big){
while(small<big&&arr[big]>tmp){
big--;
}
arr[small]=arr[big];
while(small<big&&arr[small]<tmp){
small++;
}
arr[big]=arr[small];
}
arr[small]=tmp;
return small;
}
时间复杂度O(nlogn)
网页解释