选择排序,操作数量

时间:2017-12-21 07:12:48

标签: c++ algorithm sorting selection-sort

我需要获得一些比较操作和复制操作的数量。它应该是约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;
            }
        }
    }
}

完整代码:https://repl.it/repls/WobblyMountainousDegus

1 个答案:

答案 0 :(得分:0)

您在noofcomparison++声明中正在进行if。比较结果noofcomparison时,您的代码不会增加false。您需要在noofcomparison++语句之外移动if