我有一个排序的元素列表:
c f g o p q r t w
我需要使用二分搜索找到元素f
,我做到了。
我还在2次比较中使用线性搜索找到了这个元素。
现在我需要表明,在这种情况下,线性比二进制更快,我该怎么做呢?
谢谢!
答案 0 :(得分:0)
计算每个算法所需的操作。粗略地说,二进制搜索需要:
大约6次操作。
另一方面,线性搜索只需要:
如果您认为有必要包含用于迭代列表的索引计算,则线性搜索仍然更快:
答案 1 :(得分:0)
执行这两种情况,并计算每种情况的操作次数。 二进制搜索会更大。
答案 2 :(得分:0)
下面我假设搜索的元素存在于数组中。二进制搜索采用log 2 (N)次迭代以在最坏的情况下找到所需的元素。平均案例is close to that。线性搜索平均需要N / 2次迭代才能找到元素。
迭代是二元搜索,通常包括3-4个步骤:计算中间索引,取中间元素和最多两个比较。因此,在使用二进制搜索的平均搜索中,将采用log 2 (N)* 3.5步。
在线性搜索中,它需要两个操作 - 在当前索引和比较中获取元素值。 平均线性搜索将采用N * 2/2 = N步。
在你的情况下,我们有二进制搜索的log 2 (9)* 3.5 = 3.1 * 3.5 = 10.85步。 线性搜索有9个步骤。
因此,对于9大小的阵列,线性搜索的平均值似乎略快,但不是很多。在更大的数组上,二进制搜索将轻松胜过线性搜索。