big-o - 找到算法运行时间的常数部分

标签 big-o time-complexity

我有一个算法的实现,运行时间为 O(n log n),对于 n=10^7,该算法需要 570 毫秒。有谁知道如何找到我的算法运行时间的常数部分(C)?我想要这个,这样我就可以计算对于任意输入大小算法“应该”花费多长时间。

最佳答案

我认为您无法准确计算它,但如果您确定复杂度为O(n log n),那么我建议您使用一个简单的比例来估计您的运行时间:

10^10 log 10^10   unknown run time
--------------- = ----------------
10^7 log 10^7           570 ms

在本例中,该时间应约为 1428.6 * 570 毫秒 =~ 814 秒

这在数学上并不完全正确,但如果您没有多个数据点来尝试拟合曲线来找出各种常数,那么这并不是一个不合理的起点。

关于big-o - 找到算法运行时间的常数部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19255724/

相关文章:

algorithm - 运行时分析说明

java - Big-O在java中的简单解释和使用

algorithm - T(N) = 2T(N − 1) + N, T(1) = 2 的大 O

Python 将列表转换为集合,大 O

python - 简单Python程序的时间复杂度

data-structures - 为什么散列和 BST 的复杂性不考虑处理 key 字节所需的时间?

java - 试图计算运行时间的进程在 0 纳秒内执行。如何?

algorithm - 是 O(1/2 X log N) = O(logN)

algorithm - 按组件排序多值 (SIMD) 数组

algorithm - 在线性时间内打印出不相交集数据结构中的节点