日期:2014-05-20  浏览次数:20859 次

我自己写了个快速排序法,但是没排成功,大家帮忙看看哪里错了?
public void sort(int left,int right,int arry[])
{
//先找到一个中间数
int pivot = arry[(left+right)/2];
int temp=0;
 
while(left<right)
{
while(arry[left]<pivot) left++;
while(arry[right]>pivot) right--;

if(left>=right) 
break;
temp=arry[left];
arry[left]=arry[right];
arry[right]=temp;

if(arry[left]==pivot) --right;
if(arry[right]==pivot) ++left;


}
if(left==right)
{
left++;
right--;
}
if(left<right)
sort(left,right,arry);
if(right>left)
sort(left,right,arry);

}

mian方法调用
  public static void main(String[] args) {

int len = 800000;
int[] arry= new int[len];
for(int i=0;i<len;i++)
{
int rod = (int)(Math.random()*10000);
arry[i]=rod;
}
QuickSort qs = new QuickSort();
Calendar cal = Calendar.getInstance();
System.out.println("开始时间"+cal.getTime());
qs.sort(0,arry.length-1, arry);
cal = Calendar.getInstance();
System.out.println("结束时间"+cal.getTime());
/* for(int i=0;i<arry.length;i++)
{

System.out.println(arry[i]+" ");
}*/

}


------解决方案--------------------
探讨
所谓中间数不是排中间那个。。。。。。