SIMPLE
STRING
ARRAY
SORTING
POINTER
CALCULATION
NUMBER
OTHER
C
BÀI TẬP C
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

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.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thứ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

Để giải quyết bài toán này, mình có thể sử dụng thuật toán sắp xếp để sắp xếp mảng theo thứ tự giảm dần. Sau đó, phần tử lớn thứ k sẽ nằm ở vị trí thứ k-1 trong mảng sau khi đã sắp xếp.

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ả:

Screenshot 202024 03 13 20180428 png

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ùng chuyên mục:

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý ngày tháng (datetime.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số thực (float.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý số nguyên lớn (bigint.h) trong C/C++

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý thời gian (time.h) trong C

Các hàm xử lý chuỗi (string.h) trong C/C++

Các hàm xử lý chuỗi (string.h) trong C/C++

Thread Pools và Parallel Algorithms trong C++

Thread Pools và Parallel Algorithms trong C++

Tạo và quản lý các Multithreading trong C++

Tạo và quản lý các Multithreading trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Xử lý ngoại lệ khi làm việc với Memory Allocation trong C++

Try, Catch, và Throw của Exception Handling trong C++

Try, Catch, và Throw của Exception Handling trong C++

Cách sử dụng Lambda Expressions trong C++

Cách sử dụng Lambda Expressions trong C++

Sử dụng weak_ptr trong C++

Sử dụng weak_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng shared_ptr trong C++

Sử dụng unique_ptr trong C++

Sử dụng unique_ptr trong C++

Tổng quan về Smart Pointers trong C++

Tổng quan về Smart Pointers trong C++

Sử dụng Iterators trong STL của C++

Sử dụng Iterators trong STL của C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng Vector trong C++

[Iterator] Sử dụng trong List trong C++

[Iterator] Sử dụng trong List trong C++

[STL] Sử dụng Vector trong C++

[STL] Sử dụng Vector trong C++

Tổng quan về Iterators trong C++

Tổng quan về Iterators trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

[STL] Các hàm thường dùng của lớp Vector trong C++

Top