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.