eclipse上面的代码:
package quicksort150228;
public class Quicksort {
public static void sort(int array[],int left,int right){
int i,j;
int key;
if(left>=right){
return ;
}
i=left;
j=right;
key=array[i];
while(i<j){
while(i<j&&array[j]>=key)
j--;
if(i<j){
array[i] = array[j];
i++;
}
while(i<j&&array[i]<key)
i++;
if(i<j){
array[j] = array[i];
j--;
}
}
array[i] = key;
sort(array,left,i-1);
sort(array,i+1,right);
}
public static void quickSort(int array[]){
sort(array,0,array.length-1);
}
public static void main(String[] args) {
int i=0;
int a[] = {5,3,7,2,4,1};
int len = a.length;
quickSort(a);
for(i=0;i<len;i++)
System.out.print(a[i]+" ");
}
}
通俗易懂的话说明快速排序(并对照核心代码)
II.也可以简单的理解为挖坑
把数组的第一个位置的数据拿走,保存到key值中去
从后先前 遍历(j - -),如果后面有值 比key值 小就把后面的值放到坑中去,坑 + 1(i++)
从前向后遍历(i + +),如果前面有值 比key值 大 就把前面的值放到 j 中去 (j - -)
直到 i==j 的 时候 就把key中的值放到 坑中去
此时 坑左边的值 都比 坑中的值小
坑右边的值 都比 坑中 的值大
根据递归的思想,然后循环遍历坑左边的数组,坑右边的数组,直到不可分,排序完毕!