Tìm phần tử lớn thứ k trong mảng trong C
Trong lập trình, việc tìm phần tử lớn thứ k trong một mảng là một bài toán phổ biến. Đây là một trong những bài toán cơ bản nhưng lại rất hữu ích. Trong bài tập này, mình sẽ cùng nhau giải quyết vấn đề này bằng ngôn ngữ lập trình C.

Chương trình tìm phần tử lớn thứ k trong mảng trong C
Trước khi đi vào giải pháp, mình cần hiểu rõ về vấn đề. Bài toán yêu cầu tìm phần tử lớn thứ k trong một mảng. Điều này có thể là phần tử lớn thứ nhất, thứ hai, thứ ba, và tiếp tục.
Cách giải quyết bài lập trình
Hãy xem cách giải như sau:
Bài viết này được đăng tại [free tuts .net]
Dưới đây là mã nguồn cho bài toán này trong ngôn ngữ lập trình C:
#include <stdio.h>
// Hàm sắp xếp mảng theo thứ tự giảm dần
void bubbleSortDescending(int arr[], int n) {
    int i, j, temp;
    for (i = 0; i < n - 1; i++) {
        for (j = 0; j < n - i - 1; j++) {
            if (arr[j] < arr[j + 1]) {
                temp = arr[j];
                arr[j] = arr[j + 1];
                arr[j + 1] = temp;
            }
        }
    }
}
int main() {
    int arr[100], n, k, i;
    printf("Nhập số phần tử của mảng: ");
    scanf("%d", &n);
    printf("Nhập các phần tử của mảng:\n");
    for (i = 0; i < n; i++) {
        printf("arr[%d] = ", i);
        scanf("%d", &arr[i]);
    }
    printf("Nhập phần tử lớn thứ k cần tìm: ");
    scanf("%d", &k);
    // Sắp xếp mảng theo thứ tự giảm dần
    bubbleSortDescending(arr, n);
    // Phần tử lớn thứ k là phần tử ở vị trí k-1 trong mảng sau khi đã sắp xếp
    printf("Phần tử lớn thứ %d trong mảng: %d\n", k, arr[k - 1]);
    return 0;
}
Giải thích :
- Trong mã nguồn, mình sử dụng hàm 
bubbleSortDescendingđể sắp xếp mảng theo thứ tự giảm dần. - Sau khi sắp xếp, mình chỉ cần truy cập phần tử ở vị trí thứ k-1 để lấy phần tử lớn thứ k.
 
Kết quả:

Bài toán này giúp mình tìm phần tử lớn thứ k trong một mảng, là một phần trong những bài tập quan trọng để hiểu về cách xử lý mảng trong ngôn ngữ lập trình C.

            Các kiểu dữ liệu trong C ( int - float - double - char ...)        
            Thuật toán tìm ước chung lớn nhất trong C/C++        
            Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)        
            ComboBox - ListBox trong lập trình C# winforms        
            Random trong Python: Tạo số random ngẫu nhiên        
            Lệnh cin và cout trong C++        
                Cách khai báo biến trong PHP, các loại biến thường gặp            
                Download và cài đặt Vertrigo Server            
                Thẻ li trong HTML            
                Thẻ article trong HTML5            
                Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên            
                Cách dùng thẻ img trong HTML và các thuộc tính của img            
                Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng