Big o 你跑步需要多长时间?
对一组随机整数运行插入排序,对于一些较大的n。运行需要x秒。接下来,在3n个随机数上运行它。需要多长时间 我的答案是在线性插入排序时为3倍,在n^2时为9倍。我真的不知道如何设置这个,如何在x和n之间建立关系?我还可以说明Big o 你跑步需要多长时间?,big-o,Big O,对一组随机整数运行插入排序,对于一些较大的n。运行需要x秒。接下来,在3n个随机数上运行它。需要多长时间 我的答案是在线性插入排序时为3倍,在n^2时为9倍。我真的不知道如何设置这个,如何在x和n之间建立关系?我还可以说明 O(n)=x?O(n^2)=x 插入排序为平均/最坏情况O(n2),但这仅指示运行时间如何增加。它并没有规定某个数据量为三倍的东西需要九倍的持续时间 实际运行时间可以指定为类似于n2+1000秒(即,具有较大的常数因子),并且仍然被视为O(n2)。显然,在这种情况下,加倍n不
O(n)=x?O(n^2)=x 插入排序为平均/最坏情况
O(n2)
,但这仅指示运行时间如何增加。它并没有规定某个数据量为三倍的东西需要九倍的持续时间
实际运行时间可以指定为类似于n2+1000秒
(即,具有较大的常数因子),并且仍然被视为O(n2)
。显然,在这种情况下,加倍n
不会使您的运行时间增加三倍
然而,如果它是教育类型的问题,那么
9x
可能是正确的答案。插入排序有一个已知的渐近运行时间。所以它不是一个范围,那么它一定是某个线性答案?3x?对于n->无穷大
随机数,它应该接近其渐近最坏情况,所以O(n^2)。我想这就是“非常大的n”的点,因为这也使得设置时间(恒定偏移量)完全由n
控制。但您完全正确,这完全取决于输入值的排序方式。好的,它必须是O(n^2)运行时,因为平均/最坏情况是O(n2)@aruistante,您是正确的。当n
变得足够大时,持续的影响就会减少。我发现将big-O应用于运行时而不是复杂度总是有潜在危险的,因为运行时是一个物理上有限的东西——复杂度与无限数学有关。对于足够小的n
(引入物理限制),冒泡排序很容易优于快速排序我确实同意。有一次我被问到一个历史编程问题,对于示例输入大小来说,简单的O(n)方法计算直方图几乎肯定会比使用哈希映射/BST正确执行所需的设置更快,特别是在RAM有限且动态内存分配缓慢的嵌入式处理器上。