就Big-O表示法而言,线性搜索是x ^ n,但二进制搜索是什么?我不是100%线性搜索是正确的。
答案 0 :(得分:2)
线性搜索意味着您必须遍历元素列表,直到找到您要查找的元素。
例如,如果你有一个包含元素[1, 3, 5, 7, 9, 11]
的列表并且你正在寻找11,你将从第一个元素开始,然后是第二个元素,依此类推,在这种情况下将需要6次迭代。
一般来说,我们可以说在最坏的情况下你必须遍历整个列表;所以需要n次迭代,其中n是列表中元素的数量。
所以我们说线性搜索算法是O(n)
。
在二分搜索的情况下,您从列表的中间元素开始:
在我们的例子中,我们搜索的数字是11,中间元素是5;从11开始5,我们只搜索大于5的元素的子列表,即[7, 9, 11]
。
现在,我们将继续这样做,直到找到我们正在搜索的元素,在这种情况下,只需要三次迭代就可以到达最后一个元素。
一般来说,这种方法需要log(n)
次迭代;因此,算法为O(log(n))
。
请注意,后者仅适用于排序列表。