完整代码
package Sort;
/**
* @author klr
* @create 2020-07-07-21:37
*/
public class QuickSort {
public static void main(String[] args) {
QuickSort quickSort = new QuickSort();
int[] array=new int[]{3,6,5,1,7,2,0,9};
quickSort.DigAHoleToFillTheNumber(array,0,array.length-1);
for (int i : array) {
System.out.print(i+" ");
}
}
public void DigAHoleToFillTheNumber(int[] array, int left, int right){
//出口一定要写
if(array==null||left>=right)
return;
int l=left;
int r=right;
int temp=array[left];//把最左边的当作pivot
while (l < r) {
while (l < r && array[r] >= temp) {
r--;
}
//找到了比piovt小的
if (l < r) {
array[l++]=array[r];//i++,此时i还等于left,先把left用了,right已经空出了
}
while (l < r && array[l] <= temp) {
l++;
}
if (l < r) {
array[r--]=array[l];
}
}
//填坑
array[l]=temp;
//递归
DigAHoleToFillTheNumber(array,left,l-1);
DigAHoleToFillTheNumber(array,l+1,right);
}
}
网友评论