* 实现快速排序,一开始没有考虑数组内有值相同元素的情况,出现了无限循环的情况
更改之后,添加 iArr[l]<=pivot (line 20);
基于分治的快速排序@java/DataStructure/unit7
import java.util.*;
public class TestQuickSort{
public static void main(String [] args){
Random rand=new Random(47);
int [] iArr=new int [10];
for(int i=0; i<10; i++) iArr[i]=rand.nextInt(100);
System.out.println(Arrays.toString(iArr));
quickSort(0, iArr.length-1, iArr);
System.out.println(Arrays.toString(iArr));
}
public static int partition(int low, int high, int [] iArr){
int l=low, h=high, pivot=iArr[low];
while(l<h){
while(l<h && iArr[h]>pivot){
h--;
}
iArr[l]=iArr[h];
while(l<h && iArr[l]<=pivot){
l++;
}
iArr[h]=iArr[l];
}
iArr[l]=pivot;
return l;
}
public static void quickSort(int low, int high, int [] iArr){
if(low>=high) return;
else{
int ptr=partition(low, high, iArr);
quickSort(low, ptr-1, iArr);
quickSort(ptr+1, high, iArr);
}
}
}