编写一个函数找出中位数

img


要求编写fun函数找出数组中的中位数,请问我编写的程序哪里出了问题

中位数
你数组长度是10
为什么循环是0到9
你改成10试试

9改成n,最后判断n的奇偶。


#include <stdio.h>

// 计算数组中的中位数
double find_median(int arr[], int size)
{
    if (size % 2 == 0)
    {
        // 数组大小为偶数,中位数为中间两个数的平均数
        return (arr[size / 2] + arr[size / 2 - 1]) / 2.0;
    }
    else
    {
        // 数组大小为奇数,中位数为中间的数
        return arr[size / 2];
    }
}

void quick_sort(int arr[], int left, int right)
{
    int i = left;
    int j = right;
    int pivot = arr[(left + right) / 2];

    while (i <= j)
    {
        while (arr[i] < pivot)
        {
            i++;
        }
        while (arr[j] > pivot)
        {
            j--;
        }
        if (i <= j)
        {
            int temp = arr[i];
            arr[i] = arr[j];
            arr[j] = temp;
            i++;
            j--;
        }
    }

    if (left < j)
    {
        quick_sort(arr, left, j);
    }
    if (i < right)
    {
        quick_sort(arr, i, right);
    }
}


int main()
{
    int arr[100];
    int n;

    scanf("%d", &n);   // 输入想查找的数组
    for (int i = 0; i < n; i++)
        scanf("%d", &arr[i]);

    quick_sort(arr, 0, n);  // 现将数组元素进行排序

    printf("Median: %.1f\n", find_median(arr, n));

    return 0;
}