陣列中的第 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

更新於: 2023-01-04

916 次觀看

開啟您的 職業生涯

完成課程即可獲得認證

立即開始
廣告