我试图弄清楚如何正确计算快速排序中的比较次数。我不确定我是否正确放置了柜台。我将不胜感激。 这是我的带计数器的快速排序功能:
void quicksort(int *A, int l, int r)
{
int pivot = A[(l + r) / 2];
int i, j;
i = l;
j = r;
do {
++counter;
while (A[i] < pivot)
{
++counter;
i++;
}
while (A[j] > pivot)
{
++counter;
j--;
}
if (++counter, i > j)
break;
swap(&A[i], &A[j]);
i++;
j--;
} while (i <= j);
if (j > l) quicksort(A, l, j);
if (i < r) quicksort(A, i, r);
}