#include<stdio.h>
#include<stdlib.h>
int cmp(const void *a, const void *b)
{
return *(double*)a > *(double*)b ? 1 : -1;
}
int main()
{
int N;
double *num;
scanf("%d", &N);
num = (double*)malloc(sizeof(double)*N);
for (int i = 0; i < N; i++)
scanf("%lf", &num[i]);
qsort(num, N, sizeof(double), cmp);
for (int i = 1; i < N; i++)
num[i] = (num[i - 1] + num[i]) / 2;
printf("%d", (int)num[N - 1]);
return 0;
}
自定义快排函数实现:
#include<stdio.h>
#include<stdlib.h>
void quick_sort(double *a, int l, int r)
{
if (l < r)
{
int i = sort_array(a, l, r);
quick_sort(a, l, i - 1);
quick_sort(a, i + 1, r);
}
}
int sort_array(double *a, int l, int r)
{
int i = l, j = r;
int x = a[i];
while (i < j)
{
while (i < j&&a[j] >= x)
j--;
if (i < j)
a[i] = a[j];
while (i < j&&a[i] < x)
i++;
if (i < j)
a[j] = a[i];
}
a[i] = x;
return i;
}
int main()
{
int N;
double *num;
scanf("%d", &N);
num = (double*)malloc(sizeof(double)*N);
for (int i = 0; i < N; i++)
scanf("%lf", &num[i]);
quick_sort(num, 0, N - 1);
for (int i = 1; i < N; i++)
num[i] = (num[i - 1] + num[i]) / 2;
printf("%d", (int)num[N - 1]);
return 0;
}