使用二进制堆从数组中获取前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
要从数组中获得最高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)
您需要实现这两种解决方案,并使用实际数据进行一些分析,以找出哪种更快。
相关文章:
- 如何修复我的快速排序实现?
- C++运行时错误与快速排序算法抛出堆栈转储错误
- 在 MIPS 中快速排序
- 不正确的比较和交换计数器输出用于快速排序功能
- 使用 std::vector C++快速排序,EXC_BAD_ACCESS代码 2
- 使用快速排序对 C++ 中的可视化工具错误进行排序
- 快速排序 - 三个中位数枢轴选择 - 某些元素顺序不正确
- 并行快速排序分区中的隔离错误
- 实现 3 路分区以实现快速排序
- 为什么这个快速排序实现给出了一个奇怪的输出
- 我的快速排序在对预排序的项目进行排序时失败,如何改进?
- 快速排序不适用于大型数组
- 快速排序;分段错误,但找不到位置?
- 快速排序函数在快速排序算法中如何工作?
- 3路随机快速排序分区功能
- C++一个具有 2 个参数(___ _____,整数长度)的函数中的快速排序
- c++快速排序算法中500000排序整数数组的Seg错误
- 整数的快速排序算法
- 使用二进制堆从数组中获取前x个整数会更快吗?还是使用快速排序
- 手工编码的快速排序在较小的整数上比较慢