线性vs.哈希与二进制?

时间:2015-11-20 22:36:09

标签: hash binary linear

有人可以向我解释线性,散列和二元搜索之间的区别吗?

我试图找出我将在书中找到的这些示例使用的搜索类型,我很好奇为什么会出现这种类型的搜索,这样我才能理解如何推断出这个概念。 / p>

  • 在字典中查找单词的定义。

  • 我需要在商店中为特定系统找到特定的视频游戏,游戏按系统组织。

  • 我正在查看机场的出发名单(总是按航班所在的城市排序),你想找到我在列表中飞往西雅图的航班。

  • 添加到第二个示例中,我想找到一个已经针对所有相关系统发布的特定视频游戏,在一个按系统组织游戏的商店中,我不关心我找到哪个系统第一

  • 我进行了一项实验并从按时间戳排序的列表中的参与者收集了数据(也就是说,列表根据参与者的完成时间排序)。我有一个参与者的名字,想知道他或她完成实验的时间。

1 个答案:

答案 0 :(得分:0)

线性搜索:

  • 检查每个元素,从开始到结束,直到找到值
  • 慢而低效
  • 发现第一个值时停止
  • 无法利用有序列表
  • 非常容易实现(如1行代码中容易)
  • 平均复杂度:O(n / 2)

哈希搜索:

  • 将每个标签映射到值
  • 很快找到你要找的东西
  • 比大多数索引系统更高效
  • 可能需要在添加新内容时重新映射
  • 平均复杂度:O(1)

二进制搜索:

  • 从中心开始,向前或向后一半,取决于值是否小于/大,直到达到值
  • 充分利用有序列表
  • 需要预订列表
  • 相当快速,易于实施(少于十几行代码)
  • 平均复杂度:O(log n)

这应该让您大致了解每个系统的工作原理,它们的优缺点,以及何时使用哪个系统和哪个系统。

更多研究:

关于复杂性的快速说明:时间复杂度是算法将采取的步骤数量(在这种情况下,n表示元素的数量)。您可能希望的最佳复杂性是O(1)(即时)。这里最糟糕的是线性搜索,最坏的情况是O(n)(如果你要找的是列表中的最后一个元素)。