Big O算法的最短时间

时间:2015-10-03 04:22:18

标签: algorithm big-o

我知道,对于某些问题,无论使用何种算法来解决问题,解决问题所需的时间总是最短。我知道BigO捕获最坏情况(需要的最长时间),但是如何找到作为n函数所需的最小时间?我们能找到排序n个整数所需的最短时间,或者可能找到n个整数的最小值吗?

1 个答案:

答案 0 :(得分:2)

您要找的是best case complexity。它是一种无用的算法分析,而最坏情况分析是最重要的分析,有时会在特殊情况下使用平均案例分析。

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

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

  1. 在冒泡排序中最好的情况是数组已经排序。但即使在这种情况下,你必须检查所有元素,以确保。所以这里最好的情况是O(n)。同样适用于插入排序
  2. for quicksort / mergesort / heapsort最佳案例复杂度为O(n log n)
  3. 用于选择排序,它是O(n ^ 2)
  4. 所以从上面的例子中你可以理解复杂性(无论是最好,最差还是平均)取决于算法,而不是问题