C++ 中使用 STL 查找第 K 个最小值/最大值元素


在本教程中,我们将编写一个程序,找出无序数组中的第 k 个最小值。

我们来看看解决该问题的步骤。

  • 初始化数组和 k。
  • 初始化一个空的有序集合。
  • 遍历数组并将每个元素插入数组。
  • 从 0 到 k - 1 遍历集合。
  • 返回该值。

示例

让我们来看看代码。

 现场演示

#include <bits/stdc++.h>
using namespace std;
int findKthSmallestNumber(int arr[], int n, int k) {
   set<int> set;
   for (int i = 0; i < n; i++) {
      set.insert(arr[i]);
   }
   auto it = set.begin();
   for (int i = 0; i < k - 1; i++) {
      it++;
   }
   return *it;
}
int main() {
   int arr[] = { 45, 32, 22, 23, 12 }, n = 5, k = 3;
   cout << findKthSmallestNumber(arr, n, k) << endl;
   return 0;
}

输出

如果你运行以上代码,那么你将得到以下结果。

23

结论

如果你对本教程有任何疑问,请在评论部分提出。

更新于: 2021-04-09

745 次浏览

开始您的事业

完成课程以获得认证

开始
广告