【问题标题】:Which searching technique can be used if the array is unsorted?如果数组未排序,可以使用哪种搜索技术?
【发布时间】:2012-07-16 23:27:29
【问题描述】:

二分查找在 O(log n) 中执行查找。但是,它只能在数组已排序时使用。

如果数组未排序,哪种搜索技术最好?

【问题讨论】:

  • 我认为你不能比O(n) 做得更好,除非你有一些关于数组排序的信息。
  • 顺序搜索有什么问题?对于未排序的数组,O(n) 大约是你能得到的最好的。
  • 问题是,如果数组未排序,则在消除数组中可能的元素后,您不会获得任何额外信息。因此,在最坏的情况下,您必须检查每个元素,为您提供 O(n) 运行时间。

标签: algorithm search binary-search


【解决方案1】:

如果您只进行几次搜索,那么基本的线性搜索是您能做的最好的。

如果您要经常搜索,通常最好进行排序,然后使用二分搜索(或者,如果内容的分布相当可预测,则使用插值搜索)。

【讨论】:

    【解决方案2】:

    如果您的数据未排序,您可以使用哈希表在 O(1) 时间内访问您的数据。

    【讨论】:

      【解决方案3】:

      您可以进行线性搜索。 但是线性搜索的问题是它有性能问题,它需要很多时间。 所以我建议尽可能对数组进行排序,然后使用二进制搜索。 如果您想要更好的延迟,请尝试插值搜索,这是典型二分搜索的优化版本。

      【讨论】:

        猜你喜欢
        • 2010-09-12
        • 2013-08-11
        • 1970-01-01
        • 2017-01-18
        • 2011-01-17
        • 2011-03-26
        • 2010-10-07
        • 2013-10-16
        • 1970-01-01
        相关资源
        最近更新 更多