所以我在快速排序时玩弄了一些东西,并且我发现了一些奇怪的东西,任何时候我会超过10个值进行排序,排序需要很长时间,相比之下像插入排序。有人可以解释为什么它如此缓慢,只要我要求它分类超过10个值?也许这与代码有关。无法理解为什么我的排序算法如此之慢
编辑。我做了一些改变,现在我得到堆栈溢出错误,太棒了。
public class quicksorttest{
public static void main(String args[]){
int array[] = new int[100];
for(int a =0; a<array.length;a++){
array[a] = (int)(Math.random()*100);
}
quickSort(array,0,array.length);
}
public static void quickSort(int array[],int p, int q){
if(q-p <=1);//skip
else{
int x; int i,j,k;
//let x = middle element in f[p..q-1].
x= array[(p+q/2)];
i=p;j=p;k=q;
while(j!=k){
if(array[j]==x)
j=j+1;
else if(array[j]<x){ //swap array[j] with array[i]
int temp =array[j];
array[j] = array[i]; array[i]=temp;
j=j+1;i=i+1;
}
else{//array[j]>x
//swap array[j[ with array[k-1]
int temp = array[j];
array[j] = array[k-1]; array[k-1]=temp;
k=k-1;
}
}
quickSort(array,p,i);
quickSort(array,j,q);
}
}
}
请修复您的缩进。 – 2013-02-23 18:47:45
使用eclipse(或任何您使用的)调试器并逐步执行代码。这应该很容易看出为什么你的算法需要很长时间才能完成。 – Michael 2013-02-23 18:50:47
对不起,关于缩进。我从来没有真正钻研过调试器,但我会试一试。 – Strobes 2013-02-23 18:52:17