快速排序法

来源:互联网 发布:apache 不解析php 编辑:程序博客网 时间:2024/05/21 04:22



public class Sort {

/* 建立总调用方法*/

public  void All(int [] number,int Start,int length){
Rescurive(number,Start,length);
 }

/*建立递归方法 */
private void Rescurive(int [] number,int Start,int ending){
if(ending-Start<1){
return;
}
/*把获得的基准数取到*/
int lable=select(number,Start,ending);

/*把获得的基准数取到,然后传给执行去区间段的方法,然后重新获取缩小区间的基准数*/
lable=pistion(number,Start,ending,lable);

/*把区间左移,*/
All(number, Start, lable-1);
/*把区间右移,*/
All(number, lable+1, ending);
}
 /*建立获取基准数的方法*/
private int select(int [] number,int Start,int ending){

return (Start+ending)/2;


}
/* 建立压缩区间的方法*/
private int pistion(int [] number,int Start,int ending,int lable){
int tmp=number[lable];//先把当前的基准数保持下来
number[lable]=number[ending];
//依据当前区间的起始值和结束值
while(Start!=ending){
while(Start<ending&&number[Start]<=tmp)
 Start++; 
if(Start<ending){
  number[ending]=number[Start];
  ending--;
        }
while(Start<ending&&number[ending]>=tmp)
ending--;

if(Start<ending){
number[Start]=number[ending];
Start++;
}
}
number[Start]=tmp;
return Start;
}

public static void main (String [] args){
int [] number={12,21,32,2,1,3,42,2};
Sort s1=new Sort();

s1.All(number,0, number.length-1);
for(int i=0;i<number.length;i++){
System.out.print(number[i]+" ");
}

}


}


原创粉丝点击