gpt4 book ai didi

c++ - 为什么 is_permutation 的最坏情况是 O(n^2)?

转载 作者:行者123 更新时间:2023-12-04 01:05:26 28 4
gpt4 key购买 nike

C++ 文档说 is_permutation 的最坏情况时间复杂度是 O(N^2):

At most O(N^2) applications of the predicate, or exactly N if the sequences are already equal, where N=std::distance(first1, last1). However if ForwardIt1 and ForwardIt2 meet the requirements of LegacyRandomAccessIterator and std::distance(first1, last1) != std::distance(first2, last2) no applications of the predicate are made.

但是,IMO 在最坏的情况下它应该是 O(NlogN) - 我们可以不只对 O(NlogN) 中的两个序列进行排序吗?然后只是比较它们?我错过了什么?

最佳答案

is_permutation 不要求范围是可排序的。它仅使用 bool 值比较谓词。

此外,范围是不可变的,因此即使可以对它们进行排序,排序也意味着在其中一个范围上创建索引。这会将 O(N) 的内存成本添加到 O(NlogN) 的索引生成成本中。

关于c++ - 为什么 is_permutation 的最坏情况是 O(n^2)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66640963/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com