【问题标题】:Which one is run-time efficient and storage efficient in alogarithm?算法中哪一个是运行时效率和存储效率?
【发布时间】:2013-06-20 14:41:21
【问题描述】:

我很困惑线性搜索还是二分搜索在运行时间和存储方面的效率更高。

非常感谢详细的解释

【问题讨论】:

  • 当然,如果列表已经排序,则二进制搜索会更有效,因为它是 O(log N) 算法,而线性搜索对已排序和未排序的数据都采用 O(N)。对于已排序的数据使用二分搜索,对于未排序的数据使用线性搜索。
  • 如果您在发帖前花几分钟阅读相关维基百科文章的前几句(linearbinary),您会看到:...因此,如果列表有多个元素,其他方法(例如二分查找或散列)会更快,但它们也会提出额外的要求。
  • @Erika 这不是你应该问的问题。你有没有读过这两个是什么?因为如果你有你就不会问它。请在问问题之前表现出一些努力。

标签: algorithm binary-search linear-search


【解决方案1】:

线性搜索从头开始并比较每个元素,直到找到您要查找的内容。

二分搜索在中间拆分列表并查看您的值是大于还是小于枢轴值。然后它继续递归地这样做。

例如在人员列表中。你在找约翰。二进制搜索在列表的中间查找并可能找到 Mark。 John 较低,因此搜索会丢弃列表的上半部分,因为 John 不会在其中,并在下半部分重复此操作(递归)

二分查找效率更高,但列表必须排序。

但是 - 对列表进行排序比线性搜索要慢。首先对未排序的列表进行排序不会提高效率。

【讨论】:

  • 取决于您搜索列表的次数,如果始终如此,则没有人会对列表进行排序。
  • @Jake Sellers:是的,好点。通讯录就是一个很好的例子。您可能会比添加新人更频繁地进行搜索。
【解决方案2】:

@Trophe 介绍了时间复杂度,所以我将尝试解释空间复杂度

空间要求具有相同的复杂性

线性搜索更简单,只需要一个变量

二分查找需要存储下限和上限,所以是更多空间,但不依赖于列表的大小

所以我们说它们都是 O(1) 空间复杂度

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多