complexity of recursive string permutation function

后端 未结 3 1709
耶瑟儿~
耶瑟儿~ 2020-12-31 01:16

From: Are there any better methods to do permutation of string?

what is the complexity of this function???

void permute(string elems, int mid, int en         


        
相关标签:
3条回答
  • 2020-12-31 01:35

    Without looking too deeply at your code, I think I can say with reasonable confidence that its complexity is O(n!). This is because any efficient procedure to enumerate all permutations of n distinct elements will have to iterate over each permutation. There are n! permutations, so the algorithm has to be at least O(n!).

    Edit:

    This is actually O(n*n!). Thanks to @templatetypedef for pointing this out.

    0 讨论(0)
  • 2020-12-31 01:42

    Ignoring the print, the recurrence relation satisfied is

    T(n) = n*T(n-1) + O(n)

    If G(n) = T(n)/n! we get

    G(n) = G(n-1) + O(1/(n-1)!)

    which gives G(n) = Theta(1).

    Thus T(n) = Theta(n!).

    Assuming that the print happens exactly n! times, we get the time complexity as

    Theta(n * n!)

    0 讨论(0)
  • 2020-12-31 02:00
    long long O(int n)
    {
        if (n == 0)
            return 1;
        else 
           return 2 + n * O(n-1);
    }
    
    int main()
    {
        //do something
        O(end - mid);
    }
    

    This will calculate complexity of the algorithm.

    Actualy O(N) is N!!! = 1 * 3 * 6 * ... * 3N

    0 讨论(0)
提交回复
热议问题