Description
找出长度为N的数组A中的第K大数字。(N>=K)
Input Format
第一行为两个整数
N和K。第二行为数组A。
Output Format
一个数字。
Sample Input
5 2
7 1 5 9 8
Sample Output
8
Tips
复杂度应控制在 O(N log K) 或者 O(N + K log N)
分析:堆排序的时间复杂度O(NlogN),不变,创建一个大小为k的堆
#include <iostream>
using namespace std;
class minHeap{
private:
int len=0;
public:
int* array;
void percolateDown(int hole){
int child;//第一步循环先hole 不会=child,所以不用担心初始值。
int tmp=array[hole]

该博客讨论如何使用堆排序算法在O(N log K)或O(N + K log N)的时间复杂度内,从长度为N的数组中找到第K大数字。以一个样例输入和输出解释了具体操作,并提示了算法复杂度。
最低0.47元/天 解锁文章
737

被折叠的 条评论
为什么被折叠?



