ZOJ-3499

来源:互联网 发布:野口笑子 知乎 编辑:程序博客网 时间:2024/06/06 07:09

如果用qsort,就毫无技术含量,应该有O(n)算法找中间数。。可惜不会。。暂时先水过去吧

#include<stdio.h>#include<stdlib.h>int cmp1(const void *a, const void *b){    double *d1 = (double *) a;    double *d2 = (double *) b;    if (*d1 == *d2)        return 0;    else if (*d1 > *d2)        return 1;    else        return -1;}int main(){    int n;    scanf("%d", &n);    while (n--)    {        int m, i;        scanf("%d", &m);        double *array = malloc(m * sizeof(double));        for (i = 0; i < m; i++)            scanf("%lf", array + i);        qsort(array, m, sizeof(double), cmp1);        if (m % 2 == 0)            printf("%.3lf\n", (*(array + m / 2 - 1) + *(array + m / 2)) / 2);        else            printf("%.3lf\n", *(array + m / 2));        free(array);    }    return 0;}




0 0