POJ 2388 Who's in the Middle (排序 快排复习)

来源:互联网 发布:oppo wlan 移动数据 编辑:程序博客网 时间:2024/06/01 11:50

题目链接:http://poj.org/problem?id=2388

题目大意是说有奇数个母牛,已知每只母牛的产奶量,求产奶量的中位数

这几天刷POJ刷伤了,在刷题计划里找几个水题缓解一下心情。 = =,记得在寒假和山建比赛的时候这个还做过签到题

这个题就是一个排序加取中位数,本来就是奇数只奶牛,这样连分类讨论都省了。

本来想一个sort水过去,不过想想好久没自己写快排函数了,为了水出水平,就捎带复习一下快排函数吧。

 

1Y的感觉就是好= =、

 

代码如下:

#include <stdio.h>#include <stdlib.h>#include <string.h>#include <math.h>int num[1000000];int qp (int *lif,int *rig){    if (lif >= rig)        return 0;    int *l = lif,*r = rig;    int w = *l;    while (l < r)    {        while (l < r && *r >= w)            r--;        *l = *r;        while (l < r && *l <= w)            l++;        *r = *l;    }    *l = w;    qp(lif,r - 1);    qp(l + 1,rig);}int main(){    int n;    while (~scanf ("%d",&n))    {        for (int i = 0;i < n;i++)            scanf ("%d",&num[i]);        qp(num,&num[n - 1]);        printf ("%d\n",num[(int)(n / 2)]);    }    return 0;}


 

0 0
原创粉丝点击