繁体   English   中英

是否有时间复杂度为O(n *(log n)^ 2)的算法?

[英]Is there any algorithm with the time complexity of O(n*(log n)^2)?

我知道堆排序的时间复杂度为O(n log n) ,但是我真的想不出一个算法具有O(n(log n) 2 )之一

构建一个超级容易。 最明显的例子是:

for i in xrange(n * int(log(n, 2) ** 2)):
   // do something O(1)

对于一个更有用的示例,您可以使用Master定理得出满足您需要的无限次递归(任何k都可以工作):

在此处输入图片说明


如果您正在寻找一种真正的算法,那么Shellsort的最坏情况下的复杂度为O(n(log n) 2 就地合并排序也是如此

PS您正在寻找的东西的奇特名称是准线性时间复杂度,其中k = 2。

一个经典(也是最实际的)示例是STL的stable_sort 对数二次因子是由于合并阶段本身是递归的(这允许整个算法就地运行)。

https://en.wikipedia.org/wiki/动态化倾向于将复杂度增加log n倍,因此,如果对包含基础成本log n的数据结构的动态版本进行n次查询,则将获得n log (n)^ 2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM