Big - O表示法线性和二进制搜索

时间:2015-12-15 03:27:12

标签: big-o binary-search

就Big-O表示法而言,线性搜索是x ^ n,但二进制搜索是什么?我不是100%线性搜索是正确的。

1 个答案:

答案 0 :(得分:2)

线性搜索意味着您必须遍历元素列表,直到找到您要查找的元素。

例如,如果你有一个包含元素[1, 3, 5, 7, 9, 11]的列表并且你正在寻找11,你将从第一个元素开始,然后是第二个元素,依此类推,在这种情况下将需要6次迭代。

一般来说,我们可以说在最坏的情况下你必须遍历整个列表;所以需要n次迭代,其中n是列表中元素的数量。

所以我们说线性搜索算法是O(n)

在二分搜索的情况下,您从列表的中间元素开始:

  • 案例1:我们搜索的号码与中间元素的号码相同:我们完成了!
  • 案例2:我们搜索的数字较小:我们只搜索中间元素之前的元素。
  • 案例3:我们搜索的数字更大:我们只搜索后续元素。

在我们的例子中,我们搜索的数字是11,中间元素是5;从11开始5,我们只搜索大于5的元素的子列表,即[7, 9, 11]

现在,我们将继续这样做,直到找到我们正在搜索的元素,在这种情况下,只需要三次迭代就可以到达最后一个元素。

一般来说,这种方法需要log(n)次迭代;因此,算法为O(log(n))

请注意,后者仅适用于排序列表。