public class Main {
public static void main(String[] args) {
int[] b = new int[]{9,1,5,8,10,3,7,4,32,56,6,2,0};
Main m = new Main();
m.QuickSort(b, 0, b.length-1);
for( int i=0; i<b.length;i++){
System.out.print(b[i]+" ");
}
}
public void QuickSort(int[] a,int low,int high){
int pivot;
if(low < high){
pivot = Partition(a, low, high);
QuickSort(a, low, pivot-1);
QuickSort(a, pivot+1, high);
}
}
public int Partition(int[] a,int low,int high){
int pivot;
pivot = a[low];
while(low < high){
while(low<high && a[high] >=pivot){
high--;
}
swap(a, low, high);
while(low<high && a[low] <= pivot){
low++;
}
swap(a, low, high);
}
return low; // 返回pivot所在的位置
}
private void swap(int[] a, int low, int high) {
int temp;
temp = a[low];
a[low] = a[high];
a[high] = temp;
}
}
分治法之快速排序
最新推荐文章于 2022-03-05 19:49:16 发布