哪位大哥大姐帮小弟注释一下java快速排序呀,完全不理解

package 数组;
public class Quicksort {

static void quickSort(int[] a, int left, int right) {

if(left<right)
{

int zhunze = right;

int temp = a[zhunze];

int p = left;
int q = right;

while (p<q) {

while (a[p] <= temp && p < q) {
p++;
}
a[q] = a[p];

while (a[q] >= temp && q > p) {
q--;
}
a[p] = a[q];

}
int mid=p;
a[p] = temp;

quickSort(a, left, mid-1);
quickSort(a, mid+1, right);
}

}

public static void main(String[] args) {
// TODO Auto-generated method stub
int[] a={12,32,45,564,3423,1,12,2,1,4};
quickSort(a,0,a.length-1);
for(int i=0;i<a.length;i++){
System.out.print(" "+a[i]);
}

}

}

public class Quicksort {

/**
* 快速排序
* @param a
* @param left
* @param right
*/
static void quickSort(int[] a, int left, int right) {

if(left<right)
{
int zhunze = right;
int temp = a[zhunze]; //用temp保存右端的值,因为下面a[r]的值将会改变

int l = left;
int r = right;

while (l<r) {
//将左边第一个大于等于temp(准则)的值和右边第一个小于等于准则的值互换

while (a[l] <= temp && l < r) { //从左向右 遇见第一个不小于temp的为止
l++;
}
a[r] = a[l]; //将左边第一个不小于temp(准则)的值赋给右段(右端的值不会丢失,因为上面已经保持在temp了)

while (a[r] >= temp && r > l) { //从右向左 遇见第一个不小大于temp的为止
r--;
}
a[l] = a[r]; //将右边第一个大于等于temp(准则)的值赋给左段

}
int mid=l;
a[l] = temp;
for(int i=0;i<a.length;i++){
System.out.print(" "+a[i]);
}
System.out.println();
//再以准则分为左右两部分,分别进行
quickSort(a, left, mid-1);
quickSort(a, mid+1, right);
}

}

public static void main(String[] args) {
int[] a={12,32,45,564,3423,1,12,2,1,4};
quickSort(a,0,a.length-1);
for(int i=0;i<a.length;i++){
System.out.print(" "+a[i]);
}
}
}

//可以运行下看看控制台打印出来的东西对你理解有没有帮助。

//快速排序的核心思想就是把数分成两个部分,其中一部分的每个数都比另外一部分要大。
温馨提示:内容为网友见解,仅供参考
无其他回答

哪位帮我讲讲java中的快速排序法
此时再执行第三步的时候就发现I=J,从而结束一躺快速排序,那么经过一躺快速排序之后的结果是:27 38 13 49 76 97 65,即所以大于49的数全部在49的后面,所以小于49的数全部在49的前面。快速排序就是递归调用此过程——在以49为中点分割这个数据序列,分别对前面一部分和后面一部...

哪位大哥大姐帮小弟注释一下java快速排序呀,完全不理解
\/\/快速排序的核心思想就是把数分成两个部分,其中一部分的每个数都比另外一部分要大。

Java程序快速排序是怎样的,举个例子说明一下
public class QuickSort { private static void QuickSort(int[] array,int start,int end) { if(start<end) { int key=array[start];\/\/初始化保存基元 int i=start,j;\/\/初始化i,j for(j=start+1;j<=end;j++) if(...

相似回答