是否可以更快地使用二进制堆从数组中获取前x个整数或使用快速排序

时间:2014-10-29 14:14:47

标签: c++ quicksort binary-heap

要从数组中获取最高X的整数,你们是否认为使用这样的二进制堆会更快:

  • 二进制堆获取最高整数
  • 存储最高整数
  • 从数组中删除最高整数
  • 重复,直到我们从阵列中获得最高X量

或者使用快速排序并从阵列中获取前x个整数量会更快吗?

编辑:我还应该补充说,数组不能保持排序,因为它有几个我们想要排序的变量,例如:

class cl{
   int var;
   int var1;
   int var2;
};
cl clArr[];

因此,我们可以请求从任何变量中获取最高整数。

写下来,看起来快速排序可能是一个更好的主意,虽然我想要一些意见,主要是最快的选择。

谢谢

2 个答案:

答案 0 :(得分:0)

您需要实现这两个解决方案并使用实际数据进行一些分析,以找出哪个更快。

答案 1 :(得分:0)

让我们举两个例子: -

方法1(使用最大堆): -

1) Build a Max Heap tree in O(n)
2) Use Extract Max k times to get k maximum elements from the Max Heap O(klogn)

Time complexity: O(n + klogn)

方法2(使用快速排序): -

1) Sort the elements in descending order in O(nLogn)
2) Print the first k numbers of the sorted array O(k).

Time complexity: O(nlogn)