Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Big o 你跑步需要多长时间?_Big O - Fatal编程技术网

Big o 你跑步需要多长时间?

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不

对一组随机整数运行插入排序,对于一些较大的n。运行需要x秒。接下来,在3n个随机数上运行它。需要多长时间

我的答案是在线性插入排序时为3倍,在n^2时为9倍。我真的不知道如何设置这个,如何在x和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有限且动态内存分配缓慢的嵌入式处理器上。