快速排序法

xiaoxiao2021-02-28  87

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]+" "); } } }

转载请注明原文地址: https://www.6miu.com/read-79651.html

最新回复(0)