如何显示线性搜索比二进制i当前情况更快?

时间:2014-09-25 12:37:43

标签: algorithm binary-search linear-search

我有一个排序的元素列表:

c f g o p q r t w 

我需要使用二分搜索找到元素f,我做到了。 我还在2次比较中使用线性搜索找到了这个元素。 现在我需要表明,在这种情况下,线性比二进制更快,我该怎么做呢? 谢谢!

3 个答案:

答案 0 :(得分:0)

计算每个算法所需的操作。粗略地说,二进制搜索需要:

  • 计算中点= 5
  • 将'p'与'f'进行比较
  • 计算中点= 3
  • 将'g'与'f'进行比较
  • 计算中点= 2
  • 将'f'与'f'比较 - 成功

大约6次操作。

另一方面,线性搜索只需要:

  • 将'c'与'f'进行比较
  • 将'f'与'f'比较 - 成功

如果您认为有必要包含用于迭代列表的索引计算,则线性搜索仍然更快:

  • I = 1
  • 将'c'与'f'进行比较
  • I = 2
  • 将'f'与'f'比较 - 成功

答案 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大小的阵列,线性搜索的平均值似乎略快,但不是很多。在更大的数组上,二进制搜索将轻松胜过线性搜索。