第一次学快速排序 希望有高人指点下 看看我的是否正确
public class dfddff {
public static void main(String[] args) {
int[] shu = { 12, 54, 231, 98, 65, 32, 15, 69, 2 };//需要排序的数组
dfddff d=new dfddff();
d.paixu(shu, shu.length-1,0);
}
public void paixu(int[] shu,int max,int min){
if(max<=min){
return; //递归结束条件
}
int m;
int fen=min;//用来记录平衡点的位置
int j=max;
int i=min;
boolean b=false;
boolean p=false;
for (int z = 0; z < max-min; z++) {
if(b&&p){ //平衡点不变时进入
paixu(shu,fen-1,min); //递归调用排序,排序左边
paixu(shu, max, fen+1); //排序右边
break;
}
//****************循环比较开始**************
for (; j >= min; j--) {
if(fen==j){
b=true;
break;
}
if (shu[fen] > shu[j]) {
m=shu[fen];
shu[fen] = shu[j];
shu[j] = m;
fen=j;
break;
}
}
for (; i <= max; i++) {
if(i==fen){
p=true;
break;
}
if (shu[i] > shu[fen]) {
m = shu[fen];
shu[fen] = shu[i];
shu[i] = m;
fen=i;
break;
}
}
//*****************结束***************
//打印比较后的数组
for (int q = 0; q < shu.length; q++) {
System.out.print(shu[q] + " ");
}
System.out.println();
}
}
}