Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Chương trình C tìm trung vị danh sách


Nếu phần tử danh sách được sắp xếp, giá trị giữa chia thành hai phần bằng nhau gọi là trung vị.

Số lẻ phần tử có một giá trị giữa; số chẵn có hai giá trị giữa. Trung vị số chẵn là trung bình hai giá trị giữa.

Thuật toán

Thuật toán tính trung vị:

Bước 1 - Đọc phần tử vào mảng đồng thời đếm.

Bước 2 - Sắp xếp tăng dần.

Bước 3 - Tính trung vị.

Logic sắp xếp trước khi tìm trung vị:

for(i = 1; i <= n-1; i++){ 
    for(j = 1; j <= n-i; j++){ 
        if(a[j] <= a[j+1]){ 
            t = a[j]; 
            a[j] = a[j+1]; 
            a[j+1] = t; 
        } else continue; 
    } 
}

Logic tìm trung vị:

if(n % 2 == 0) 
    median = (a[n/2] + a[n/2+1]) / 2.0; 
else 
    median = a[n/2 + 1];

Ví dụ

Chương trình C tính trung vị:

#include <stdio.h> 
#define N 10 
main(){ 
    int i, j, n; 
    float median, a[N], t; 
    printf("Nhap so luong phan tu\n"); 
    scanf("%d", &n); 
    printf("Nhap %d gia tri\n", n); 
    for(i = 1; i <= n; i++) 
        scanf("%f", &a[i]); 
    for(i = 1; i <= n-1; i++){ 
        for(j = 1; j <= n-i; j++){ 
            if(a[j] <= a[j+1]){ 
                t = a[j]; 
                a[j] = a[j+1]; 
                a[j+1] = t; 
            } else continue; 
        } 
    } 
    if(n % 2 == 0) 
        median = (a[n/2] + a[n/2+1]) / 2.0; 
    else 
        median = a[n/2 + 1]; 
    for(i = 1; i <= n; i++) 
        printf("%f ", a[i]); 
    printf("\n\nTrung vi la %f\n", median); 
}

Đầu ra

Kết quả chạy chương trình:

Nhap so luong: 5 
Nhap 5 gia tri: 2.3 1.2 3.8 4.6 8.9 
8.900000 4.600000 3.800000 2.300000 1.200000 
Trung vi la 3.800000