每次插入后 C++ 中的第 k 个最小元素
在本教程中,我们将介绍如何在每次插入后找到第 k 个最小元素。
我们将使用最小堆来解决这个问题。我们来看一下完成此程序的步骤。
- 利用随机数据初始化数组。
- 初始化优先级队列。
- 直到 k - 1,将不会有任何第 k 个最小元素。因此,打印您喜欢的任何符号。
- 编写一个循环,该循环从 k + 1 迭代到 n。
- 打印最小堆的根元素。
- 如果元素大于最小堆的根元素,则弹出根元素并插入该元素。
示例
我们来看一下代码。
#include <bits/stdc++.h>
using namespace std;
void findKthSmallestElement(int elements[], int n, int k) {
priority_queue<int, vector<int>, greater<int>> queue;
for (int i= 0; i < k - 1; i++) {
queue.push(elements[i]);
cout << "- ";
}
queue.push(elements[k-1]);
for (int i = k; i < n; i++) {
cout << queue.top() << " ";
if (elements[i] > queue.top()) {
queue.pop();
queue.push(elements[i]);
}
}
cout << queue.top() << endl;
}
int main() {
int arr[] = {3, 5, 6, 2, 7, 8, 2, 3, 5, 9};
findKthSmallestElement(arr, 10, 5);
return 0;
}输出
如果您运行以上代码,则将获得以下结果。
- - - - 2 3 3 3 5 5
结论
如果您对本教程有任何疑问,请在评论部分中提出。
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP