java - 使用自动初始化数组的算法中的复杂性测量

标签 java php arrays time-complexity

在评估使用必须初始化的数组的算法的时间复杂度时,通常表示为O(k)。其中 k 是数组的大小。
例如,计数排序 的时间复杂度为 O(n + k)

但是当数组自动初始化时会发生什么,就像在 Java 或 PHP 中一样。可以公平地说 Java(或 PHP...)中的计数排序(或任何其他需要初始化数组的算法)的时间复杂度为 O(n)?

最佳答案

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

您必须记住,时间复杂度是针对没有缓存和资源限制的理想机器确定的,并且独立于特定语言或机器的实际执行方式。

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

但是在真实机器中,初始化可能比递增更有效,所以 nk 不能直接比较。初始化模式类似于顺序且非常高效(n)。例如,如果计数是 int 类型,则 CPU 可以使用 long 或 128 位寄存器来执行初始化。

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

关于java - 使用自动初始化数组的算法中的复杂性测量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7786476/

相关文章:

php - 不同的时区具有相同的时间戳?

c - 为什么函数 "everymonth"返回意外结果?

java - 如何设置birt报告的编码类型

java - 我无法在 Android Studio 上打开虚拟设备

php - 数据列表在下拉列表中的空格后未显示完整名称

php - 如何向PHP服务器发送数据?

c - 在 strcpy 函数中使用指针作为参数。尝试理解书本上的代码

ios - 在主数组的数组中查找 NSString

java - 1.6 和 1.7 getRuntime().exec 之间的不同行为

java - 为什么从 servlet 转发到 JSP 时必须使用正斜杠?