Computer >> Máy Tính >  >> Lập trình >> Lập trình

Phần tử lớn nhất thứ K trong một mảng


Từ một tập dữ liệu, thuật toán này sẽ tìm phần tử lớn nhất đến phần tử lớn thứ k của mảng.

Vấn đề này có thể được giải quyết dễ dàng bằng cách sắp xếp mảng. Chúng ta có thể sắp xếp chúng theo thứ tự tăng dần hoặc giảm dần. Giải nó theo thứ tự giảm dần, chúng ta có thể lấy k phần tử đầu tiên để tìm ra kết quả của chúng ta.

Đầu vào và Đầu ra

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

Thuật toán

kthLargestElement(array, n, k)

Đầu vào: Mảng, số phần tử trong mảng, đặt k.

Đầu ra: Hiển thị phần tử lớn nhất đến phần tử lớn thứ k của mảng.

Begin
   sort the array in descending order
   for i := 0 to k-1, do
      display array[i]
   done
End

Ví dụ

#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);
}

Đầu ra

87 63 50 45