📜  门| GATE CS 2008 |第40章

📅  最后修改于: 2021-06-28 19:00:31             🧑  作者: Mango

确定整数在n个整数的排序数组中是否出现大于n / 2次的比较的最小次数为

(A) Θ(n)
(B) Θ(登录)
(C) Θ(log * n)
(D) Θ(1)答案: (B)
说明:如果回答Theta(1),请考虑示例{1,2,2,2,4,4},{1,1,2,2,2,2,3,3}

找出整数是否在n个整数的排序数组(升序)中出现n / 2次以上的最佳方法是二进制搜索法。

  1. 元素的首次出现可以使用分治法在O(log(n))时间内找到,可以说是i。
  2. 元素的最后一次出现可以使用分治法在O(log(n))时间内找到,让我们说它是j。
  3. 现在该元素的出现次数(计数)为(j-i + 1)。总时间复杂度= log n + log n +1 = O(logn)

请参阅检查排序数组中的多数元素

该解决方案由Nirmal Bharadwaj提供
这个问题的测验