假设您必须使用n = 1,000,000
元素对数组进行排序。如果假设每个基本步骤需要一毫秒,那么插入sort和heapsort大致需要多长时间?
我知道在最坏的情况下插入排序需要n^2
步,而在最坏的情况下,heapsort需要n log n
步。
因此1,000,000 ^ 2
插入排序= 1*10^12
毫秒
和1,000,000 * log(1,000,000)
? 6,000,000
毫秒
是正确的吗?
答案 0 :(得分:3)
嗯...
问题是“订单”符号只是谈论限制和比较,而不是绝对时间。它还会留下常量和低阶项。
例如(这完全是虚构的),您可能正在查看的特定插入排序实现的实际运行时间可能是:
num steps = 45,334 * n^2 + 6,500,000 * n + 2,000,000
这是一个O(n^2)
算法,但它比你计算的时间要花费更多的时间。