だから私はクイックソートで遊んでいて、何か奇妙なことに気づきました。ソートする値が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);
}
}
}