阵列中的第K个最大的元素
从一组数据中,该算法将找到数组中最大的元素到第k大的元素。
这个问题可以通过对数组进行排序来轻松解决。我们可以按升序或降序来排序。以降序来解决,我们可以得到前k个元素来找到我们的结果。
输入和输出
Input:
The elements of an array: {1, 23, 12, 9, 30, 2, 50, 63, 87, 12, 45, 21}, K = 4
Output:
4 largest elements are 87 63 50 45
算法
kthLargestElement(array, n, k)
输入: 数组,数组中的元素个数,放置k。
输出: 显示数组中最大的元素到第k个最大元素
Begin
sort the array in descending order
for i := 0 to k-1, do
display array[i]
done
End
示例
#include<iostream>
#include<algorithm>
using namespace std;
bool compare(int a, int b) {
return a>b;
}
void kthLargestElement(int array[], int n, int k) {
sort(array, array+n, compare);
for (int i = 0; i < k; i++) //largest to kth largest element
cout << array[i] << " ";
}
int main() {
int array[] = {1, 23, 12, 9, 30, 2, 50, 63, 87, 12, 45, 21};
int n = 12;
int k = 4;
kthLargestElement(array, n, k);
}
输出
87 63 50 45