此阵列中的最佳搜索条件?

时间:2009-12-13 07:56:11

标签: algorithm search

我刚刚写了这个考试,其中有一个问题:考虑一个大小为2n的数组,其中奇数位置的数字按升序排序,偶数位置的数字按降序排序。现在,如果我必须在这个数组中搜索一个数字,这是一个很好的方法吗?选项是:

  1. 快速排序,然后二元搜索
  2. 合并两个已排序的数组,然后合并二进制搜索
  3. 顺序搜索
  4. 在1中,快速排序采用O(n log n)和二进制搜索,O(log n)

    在2中,Merge采用O(n)然后O(log n)进行二进制搜索

    3,需要O(n)。

    所以3结果是要走的路。那是对的吗?是否有更好的选择可能没有给出?

    编辑:我是第一个接受Lukas的回答。叹气, 是另一种选择。我得到-1。 :(

4 个答案:

答案 0 :(得分:6)

您可以进行两次二进制搜索 - 即O(log n),因为您忽略常量(在这种情况下为2)。

答案 1 :(得分:1)

如果你只对两个集合进行二元搜索会不会更容易?那么O(log n)和O(log n)?

这会不会更容易,所以如果在第一步中找到,第二步甚至不需要?

答案 2 :(得分:0)

检查它是偶数还是奇数,并对您感兴趣的数组部分进行二分搜索.O(log n)。

答案 3 :(得分:0)

我认为第二种选择符合您的标准。

合并排序:我们可以轻松地从两个半排序数组中获取完整的排序数字,时间复杂度为O(n)

然后二进制搜索的时间复杂度为O(logn)