基于比较的算法,在线性时间内将最大元素与最小元素配对

时间:2019-03-17 16:58:49

标签: algorithm

给出一个整数数组。我想设计一个基于比较的算法 将最大元素与最小元素配对,第二大元素与第二最小元素配对,依此类推。显然,如果我对数组进行排序,这很容易,但是我想在O(n)时间内完成。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:4)

好吧,我可以证明它不存在。

让我们矛盾地证明:假设有这样的算法

  • 何时可以获得第k个最小和第k个最大对的数组。
  • 当排序数组时,我们可以按顺序排列所有mins,然后按顺序排列所有max,
  • 这样我们就可以将原始数组按O(n)个步骤排序。
  • 因此我们可以获得基于基于比较的排序算法,该算法以O(n)进行排序
  • 然而,可以证明基于比较的排序算法必须至少取n 登录n个步骤。 (许多在线证明,即https://www.geeksforgeeks.org/lower-bound-on-comparison-based-sorting-algorithms/
  • 因此我们有一个矛盾,所以这种算法不会 存在。