首页 > 技术文章 > 算法和数据结构 海量数据求前K个数

yangwenhuan 2020-03-19 15:50 原文

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]);
        }
    }
}

推荐阅读