C++中std::next_permutation()函数的时间复杂度是什么?

7

我想了解next_permutation函数的时间复杂度。我能看到它的代码吗?

1个回答

12

参见http://www.sgi.com/tech/stl/next_permutation.html

线性。最多需要(last - first)/ 2次交换。

要查看源代码,只需查找您系统的STL头文件即可。在类Unix系统上,您可能需要在/usr/include/c++/4.1.2/bits/stl_algo.h之类的位置进行查找。


3
实际上,它比线性更好。它是摊销O(1) - 也就是说,如果你调用它n!次,它仅需要O(n!)次操作,而不是n * n!。请参阅此问题 - ShreevatsaR

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接