所以我正在玩快速排序,我注意到一些奇怪的事情,每当我对超过 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);
}
}
}