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