快速排序
public class QuickSort {
public static void quickSort(int[] list){
quickSort(list, 0, list.length-1);
}
private static void quickSort(int[] list, int first, int last) {
if (last>first){
int pivotIndex= partition(list,first,last);
quickSort(list,first,pivotIndex-1);
quickSort(list,pivotIndex+1,last);
}
}
private static int partition(int[] list, int first, int last){
int pivot = list[first];
int low= first+1;
int high= last;
while (low<high){
//寻找第一个大于pivot的
while (low<=high&&list[low]<=pivot ){
low++;
}
//寻找第一个小于或等于pivot的
while (low<=high&&list[high]>pivot){
high--;
}
//swap,并且是在high>low条件下
if (high>low){
int temp=list[high];
list[high]=list[low];
list[low]=temp;
}
}
while (high>first && list[high]>=pivot){
high--;
}
if (pivot>list[high]){
list[first]=list[high];
list[high]=pivot;
//return pivot 的最终位置
return high;
}
else {
return first;
}
}
public static void main(String[] args) {
int[] list={2,3,1,1,-1,4,5,0};
quickSort(list);
for (int i = 0; i < list.length; i++) {
System.out.println(list[i]);
}
}
}