【问题标题】:Which search algorithm to prefer?更喜欢哪种搜索算法?
【发布时间】:2018-02-09 18:39:22
【问题描述】:

二分查找算法的 O 值很大,为 O(log n),而顺序查找算法的 O 值很大,为 O(n)。但是我们需要在二进制搜索之前进行排序算法,并且排序算法的最佳大 O 值是 O(n.log n)。因此,实际上,二进制搜索的大 O 值是 O(n.log n),它大于顺序搜索的 O(n.log n)。那么,作为搜索算法首选哪一个呢?

【问题讨论】:

    标签: search big-o binary-search sequential


    【解决方案1】:

    实际上,这取决于您搜索的频率。如果您必须搜索数百万次,则需要二进制搜索,即使您必须支付排序的前期成本。这取决于您的用例。使用二分搜索,您还可以确保插入保持列表排序,因此它们也会变慢。

    如果您需要执行大量插入操作且搜索量很少,则顺序搜索可能会更快。

    请记住,在您处理大量数据之前,其中很多内容甚至不会被注意到。

    【讨论】:

      【解决方案2】:

      顺序搜索实际上很少用于优化应用程序。因为找到合适的数据结构通常比使用在 O(n) 中提供常用搜索的数据结构要好得多。

      例如,red-black tree 是一种特殊的平衡二叉树,它在 O(log n) 内提供插入/删除/搜索所有功能。所以创建、填写、搜索都很快。

      【讨论】:

        猜你喜欢
        • 2014-07-11
        • 1970-01-01
        • 2010-09-10
        • 1970-01-01
        • 1970-01-01
        • 2020-01-10
        • 2017-10-25
        • 1970-01-01
        相关资源
        最近更新 更多