algorithm - 大O算法最短时间

标签 algorithm big-o

我知道对于一些问题,无论你用什么算法来解决它,解决问题总是需要一定的最短时间。我知道 BigO 会捕获最坏情况(所需的最大时间),但是如何找到作为 n 函数所需的最短时间?我们能否找到排序 n 个整数所需的最短时间,或者也许找到 n 个整数中的最小值?

最佳答案

您正在寻找的是best case complexity。对算法来说是一种无用的分析,最坏情况分析是最重要的分析,平均情况分析有时在特殊场景下使用。

最佳情况的复杂性取决于算法。例如,在线性搜索中,最好的情况是搜索到的数字位于数组的开头。或者在二进制搜索中,它位于第一个分界点。在这些情况下,复杂度为 O(1)。

对于单个问题,最佳情况复杂度可能因算法而异。例如,以免讨论一些基本的排序算法。

  1. 在冒泡排序中,最好的情况是数组已经排序。但即使在这种情况下,您也必须检查所有元素才能确定。所以这里最好的情况是 O(n)。插入排序也是如此
  2. 对于快速排序/合并排序/堆排序,最好的情况复杂度是 O(n log n)
  3. 对于选择排序是 O(n^2)

所以从上面的案例你可以理解复杂度(是最好的,最坏的还是平均的)取决于算法,而不是问题本身

关于algorithm - 大O算法最短时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32918878/

相关文章:

java - 如何以更优雅和可扩展的方式编写这些条件语句

c - 使用 ZeroMQ 发现服务

algorithm - 我相信这个算法在 O(n^3) 时间内运行。正确的?

algorithm - 对于某个常数 c,阶乘(floor(log(n)))是大 O(n ^ c)吗?

涉及分区和选择的算法

algorithm - 三元搜索的递归关系

c++ - 从 import queue.front() 获取一个奇怪的段错误

c# - 这在技术上是 "Hello World"的 O(1) 算法吗?

algorithm - 从 2 递增到 x 的 While 循环的时间复杂度,其中 x^2 <= N

python - 数组中重复元素的查找函数