配列の中央値を求めるC言語プログラムの書き方

まず、配列をソートしてから、配列の中央値を見つける。

  1. クイックソート
#include <stdio.h>
#include <stdlib.h>

// 比较函数,用于排序
int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int main() {
    int arr[] = {3, 1, 5, 2, 4};
    int len = sizeof(arr) / sizeof(arr[0]);

    // 对数组进行排序
    qsort(arr, len, sizeof(int), compare);

    // 打印排序后的数组
    printf("Sorted array: ");
    for (int i = 0; i < len; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    return 0;
}
  1. 配列の長さが奇数の場合は、ソート後の配列の中央項が中央値、配列の長さが偶数の場合は、ソート後の配列の中央2つの平均値が中央値となる。
#include <stdio.h>
#include <stdlib.h>

int compare(const void *a, const void *b) {
    return (*(int*)a - *(int*)b);
}

int main() {
    int arr[] = {3, 1, 5, 2, 4};
    int len = sizeof(arr) / sizeof(arr[0]);

    // 对数组进行排序
    qsort(arr, len, sizeof(int), compare);

    // 打印排序后的数组
    printf("Sorted array: ");
    for (int i = 0; i < len; i++) {
        printf("%d ", arr[i]);
    }
    printf("\n");

    // 求中位数
    int median;
    if (len % 2 == 0) {
        median = (arr[len/2 - 1] + arr[len/2]) / 2;
    } else {
        median = arr[len/2];
    }

    printf("Median: %d\n", median);

    return 0;
}

このコードは、最初に配列をソートし、次に配列の長さが奇数か偶数かに基づいて中央値を導き出します。

bannerAds