JAVA快速排序的实现
public class QuickSort {
public static void main(String[] args) {
int[] array = {19,97,9,17,1,8,19};
quickSort(array,0,array.length-1);
for (int i : array) {
System.out.print(i+" ");
}
System.out.println();
}
public static void quickSort(int[] array,int left, int right){
if (left >= right){
return;
}
int afterLeft = left;
int afterRight = right;
int pivot = array[afterLeft]; // 取最左边的数为pivot
while (afterLeft < afterRight){
// pivot是最左边,所以先从最右边开始查
// 当最右边的数小于pivot时:array[afterLeft] = array[afterRight]
// 否则afterRight-1,查下一个,直到找到比pivot小的数
while (afterLeft < afterRight && array[afterRight] >= pivot){
afterRight--;
}
if (array[afterRight] <= pivot){
array[afterLeft] = array[afterRight];
}
// 右边的数交换后,从左边查
while (afterLeft < afterRight && array[afterLeft] <= pivot){
afterLeft++;
}
if (array[afterLeft] >= pivot){
array[afterRight] = array[afterLeft];
}
// 当afterLeft == afterRight时,将pivot放到这里
if (afterLeft == afterRight){
array[afterRight] = pivot;
}
}
// 向左递归
quickSort(array,left,afterRight-1);
// 向右递归
quickSort(array,afterLeft+1,right);
}
}
可以参考视频:
https://www.bilibili.com/video/BV1at411T75o?from=search&seid=6781045510041434107