我需要获得一些比较操作和复制操作的数量。它应该是约4。通过这个公式,但我得到约2(我的n是2,所以它应该是2 ^ 2 = 4)。怎么了?
void selection(double A[], int N)
{
int i, j, min, tmp;
for (i = 1; i < N; i++)
{
min = i;
for (j = i + 1; j < N; j++)
if (A[j] < A[min]) {
noofcomparison++;
min = j;
}
if (min != i)
{
noofcomparison++;
tmp = A[i];
A[i] = A[min];
A[min] = tmp;
noofcopying += 3;
}
}
}
}
答案 0 :(得分:0)
您在noofcomparison++
声明中正在进行if
。比较结果noofcomparison
时,您的代码不会增加false
。您需要在noofcomparison++
语句之外移动if
。