快速排序:
void Quicksort(int array[], int left, int right){
int pivot = left, i,ch,j;
for(i=left+1;i<=right;i++){
j = i;
if(array[j] < array[pivot]){
ch = array[j];
while(j > pivot){
array[j] = array[j-1];
j--;
}
array[j] = ch;
pivot++;
}
}
if(pivot-1 >= left){
quick(array,left,pivot-1);
}
if(pivot+1 <= right){
quick(array,pivot+1,right);
}
}
冒泡:
void Bubblesort(int array[])
{
int length = array.length;
int i,j,r,aux;
for(i=length-1; i >= 1; i--)
{
for(j=0; j < i ; j++)
{
if(array[j]>array[j+1])
{
aux = array[j];
array[j] = array[j+1];
array[j+1] = aux;
}
}
}
for(k = 0; k < length; ++k)
{
printf("%d\n",array[k]);
}
}
最坏情况:
Quicksort:n²
Bubblesort:n²
平均情况:
Quicksort:nlog(n)
Bubblesort:n²
通常情况下,这意味着Quicksort比Bubblesort更快。
但在哪种情况下Quicksort比Bubblesort更快?
记住,当列表已经按照几乎排序的顺序时,Quicksort将继续递归,对于非常小的集合,bubblesort可以更快。
答案 0 :(得分:3)
通常情况下,这意味着Quicksort比Bubblesort更快?
是的。更快,更快。
记住,当列表已经按照几乎排序的顺序时,Quicksort将继续递归。
正确。 Quicksort最糟糕的情况是一个大问题,所以如果不进行修改,它通常不是现实世界使用的首选算法。