首页 文章

线性搜索或二进制搜索或二进制搜索树

提问于
浏览
0

我在这里有一点疑问......

如果我知道列表中的搜索元素(包括按顺序排序的32个元素)出现在前四个位置内,

这是最好的搜索算法 .

线性搜索至少需要4次迭代....二进制搜索至少5次迭代二进制搜索树如何...在这种情况下它是否提供更好的解决方案或等于二进制搜索...

我相信在这种情况下,线性搜索会更好 .

有谁可以确认一下吗?

4 回答

  • 0

    如果你知道位置在前4个位置比线性搜索更好,因为你必须测试不超过4个元素 . 使用二进制搜索lg 32 = 5,因此您必须测试最多5个元素 .

    此外,对于像这样的少量元素,时差可以忽略不计,并且通过保持简单和进行线性搜索,您将获得最佳服务 .

    您也可以使用HashTable或HashSet进行O(1)时间,但是对于少量数据,线性搜索可能比执行散列函数更快 .

    如果小差异确实很重要,我建议在它运行的环境中测量它 .

  • 0

    你可以对前4个元素进行二分查找 . 它将是lg 4 = 2次迭代! :-)

  • 0

    有了这么多的元素和你手头的确切应用程序,二元搜索树将是一种矫枉过正 .

    此外,为了解决现在的问题,线性搜索会更好,因为定位特定元素的预期迭代次数将超过二进制搜索 .

    对于现实生活场景,所呈现的问题将非常罕见 . 因此,在排序数组上使用二进制搜索总是更好 .

  • 1

    如果数据以某种方式均匀分布,则使用插值搜索是明智的 . 通过使用分布知识,您很有可能在一步中猜出正确的位置 . 预期的复杂性是O(log(log(n))) .

    这是我的页面的链接,我用Java实现了算法:Algoritmy.net - interpolation search implementation

相关问题