所以我在快速排序時玩弄了一些東西,並且我發現了一些奇怪的東西,任何時候我會超過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