中位数
你数组长度是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;
}