陣列中的第 K 大元素
從一組資料中,此演算法將找到陣列中從第 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 大元素開始至第 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
廣告