要从数组中获取最高X的整数,你们是否认为使用这样的二进制堆会更快:
或者使用快速排序并从阵列中获取前x个整数量会更快吗?
编辑:我还应该补充说,数组不能保持排序,因为它有几个我们想要排序的变量,例如:
class cl{
int var;
int var1;
int var2;
};
cl clArr[];
因此,我们可以请求从任何变量中获取最高整数。
写下来,看起来快速排序可能是一个更好的主意,虽然我想要一些意见,主要是最快的选择。谢谢
答案 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)