快速排序由C. A. R. Hoare在1960年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。
第一种写法
解析:
代码如下:
public static void sort02(int[] a, int low, int high) {
int i,j,index;
if(low > high){
return;
}
i = low;
j = high;
index = a[i];
while(i < j){
while(i < j && a[j] >= index){
j--;
}
while(i < j && a[i] <= index){
i++;
}
if(i < j){
swap(a,i,j);
}
}
swap(a,low,i);
sort02(a,low,i-1);
sort02(a,i+1,high);
}
private static void swap(int[] nums,int from,int to){
int temp = nums[from];
nums[from] = nums[to];
nums[to] = temp;
}
第二种写法
public static void sort(int a[], int low, int hight) {
int i,j,index;
if(low > hight){
return;
}
i = low;
j = hight;
index = a[i];
while(i < j){
while(i < j && a[j] >= index){
j--;
}
if(i < j){
a[i++] = a[j];
}
while(i < j && a[i] < index){
i++;
}
if(i < j){
a[j--] = a[i];
}
}
a[i] = index;
sort(a,low,i-1);
sort(a,i+1,hight);
}