首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >自初始化阵列算法中的复杂度度量

自初始化阵列算法中的复杂度度量
EN

Stack Overflow用户
提问于 2011-10-16 18:44:30
回答 3查看 144关注 0票数 1

当要评估使用必须初始化的数组的算法的时间复杂度时,通常用O(k)表示。其中k是数组的大小。

例如,计数排序的时间复杂度为O(n + k)

但是,当数组被自动初始化时会发生什么,比如在Java或PHP中。公平地说,在Java (或PHP.)中计数排序(或任何其他需要初始化数组的算法)是否公平?具有O(n)的时间复杂性

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-10-16 18:52:00

你是说这个时间复杂度为O(n + k)的http://en.wikipedia.org/wiki/Counting_sort吗?

您必须记住,时间复杂性是为一个理想化的机器确定的,它没有缓存、资源约束,并且独立于特定语言或机器的实际执行方式。

时间复杂度仍然是O(n + k)

然而,在真正的机器上,初始化可能比增量更有效,因此nk并不是直接可比的。初始化的模式是顺序的和非常有效的( n)。例如,如果计数是int类型,则CPU可以使用long或128位寄存器来执行初始化。

用于计数的访问模式可能是相对随机的,对于较大的k值则可能要慢得多。(慢10倍)

票数 1
EN

Stack Overflow用户

发布于 2011-10-16 18:51:33

实际上是O(n+k)

因此,如果n的阶数比k (计数排序中的许多重复项)高,则可以在时间复杂性中丢弃它,使其成为O(n)

票数 1
EN

Stack Overflow用户

发布于 2011-10-16 18:57:05

自动初始化不是免费的,无论如何您必须考虑它,所以它仍然是O(n + k)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7786476

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档