此独特排列算法的时间复杂度

时间:2019-07-19 20:13:22

标签: algorithm permutation

以下algorithm的时间复杂度是多少?

我知道不检查重复项的排列需要O(n!),但是我对shoudSwap函数特别感兴趣,如下所示:

// Returns true if str[curr] does not match with any of the 
// characters after str[start] 
bool shouldSwap(char str[], int start, int curr) 
{ 
    for (int i = start; i < curr; i++)  
        if (str[i] == str[curr]) 
            return 0; 
    return 1; 
} 

1 个答案:

答案 0 :(得分:1)

如果n是char数组specialization | Claims_Totals | PERCENTAGE ___________________________________________ cardiologist 25 25% oncologist 15 15% general surgeon 10 10% 的大小,则shouldSwap()的时间复杂度为str[],因为它将对O(n)数组中的每个元素最多迭代一次