算法和数据结构 海量数据求前K个数

1、时间复杂度:O(NlogK)。

std::vector<int> arr = {10, 3, 5, 6, 2, 3, 112, 35};
std::priority_queue<int, std::vector<int>, std::greater<int> > q;
// std::priority_queue<int> q;
int K = 3;
for (int i = 0; i < arr.size(); i++)
{
    if (i < K) q.push(arr[i]);
    else
    {
        if (arr[i] > q.top())
        // if (arr[i] < q.top())
        {
            q.pop();
            q.push(arr[i]);
        }
    }
}
posted @ 2020-03-19 15:50  happyyoung  阅读(206)  评论(0编辑  收藏  举报