二进制搜索 - 最佳和最差情况

时间:2015-06-15 17:39:14

标签: algorithm data-structures

在考试中,我看到一个问题:

  

以下哪一项属实?

     
      
  1. 对于二进制搜索,当目标项位于搜索列表的开头时,会出现最佳情况。
  2.   
  3. 对于二进制搜索,当目标位于搜索列表的末尾时,会出现最佳情况。
  4.   
  5. 对于二进制搜索,最坏的情况是目标项目不在搜索列表中。
  6.   
  7. 对于二进制搜索,最糟糕的情况是在搜索列表中间找到目标。
  8.   

在我看来, 1。 3。都是正确的,但它只是要求一个选项。我错过了什么?

3 个答案:

答案 0 :(得分:4)

3。确实是正确的,因为您需要通过算法并终止于最差的" stop子句,列表为空,需要log(n)次迭代。

1。不正确。最好的情况是当第一个元素是目标时,它是中间元素是目标时,比较中间元素和目标,而不是第一个元素,所以如果中间元素是目标 - 算法将在一次迭代中完成。

答案 1 :(得分:0)

我认为 1。不正确。对于每次迭代,我们将当前搜索列表的中间项与目标进行比较。因此,如果目标项目位于搜索列表的开头,我们需要最长的搜索时间。

答案 2 :(得分:0)

如果我们假设搜索列表已排序,那么选项3将是正确的,因为每次我们将列表分成两部分而我们将两部分中的一部分分开。有了这个,我们得到log n级别。如果找不到元素,则需要O(log n)来检查哪个是二进制搜索的最坏情况。

如果列表没有排序,我们想要应用二进制搜索,那么首先我们必须对列表进行排序。 我们可以通过插入排序来搜索元素。在那种情况下1& 3都是正确的。

选项1的正确性:

当我们从列表中插入第一个元素时,我们检查这是否与给定元素匹配 - 如果匹配则最好是O(1)

选项3的正确性:

如果我们通过排序和搜索遍历列表中的所有元素,但仍未找到该元素,那么它将是麦芽汁案例O(n²)