使用二进制堆从数组中获取前x个整数会更快吗?还是使用快速排序

Would it be quicker to use a binary heap to get the top x amount of integers from an array or use quick sort

本文关键字:快速排序 整数 二进制 数组 获取      更新时间:2023-10-16

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

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

或者只使用快速排序并从数组中提取前x个整数会更快吗?。

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

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

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

写下来,快速排序似乎是一个更好的主意,尽管我想听听一些意见,主要是什么是最快的选择。

感谢

让我们以这两种情况为例:-

方法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)

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