选择排序,操作数量

问题描述 投票:0回答:1

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

c++ algorithm sorting selection-sort
1个回答
0
投票

你在noofcomparison++声明中做if。当比较结果noofcomparison时,你的代码不会增加false。你需要在noofcomparison++声明之外移动if

© www.soinside.com 2019 - 2024. All rights reserved.