快排---谁是中间那个

来源:互联网 发布:requirejs 加载json 编辑:程序博客网 时间:2024/04/30 01:47
Description一天,农夫乔伊像往常一样来到了他的牧场,他突然对他的奶牛产奶量产生了兴趣。他想知道产奶量处于中间的那头奶牛的产奶量是多少,处于中间的意思是说,其中有一半牛的产奶量比它多,另一半牛的产奶量比它少。这个问题现在交由你来写程序完成!Input有多组测试数据,第一行一个正整数T(1<=T<=20),接下来T行,每行第一个正整数为奇数N不会超过10^5,接下来N数字代表第i(1<=i<=N)头牛的产奶量。Output输出产奶量处于中间的牛的产奶量。Sample Input15 1 2 4 5 3Sample Output3
典型的快排问题  下面是我的代码
#include <iostream>#include <cstdio>#include <algorithm>//sort 函数所在的头文件#define N 100using namespace std;struct cow{    int milk;    int num;}f[N];bool cmp(cow A,cow B)//自己定义排序的条件先后顺序{    if(A.milk<B.milk)        return true;    if(A.milk==B.milk&&A.num>B.num)        return true;    return false;}int main(){    int n;    while(cin>>n)    {        for(int i=1;i<=n;i++)        {            cin>>f[i].milk;            f[i].num=i+1;        }        sort(f+1,f+n+1,cmp);        cout<<f[(n+1)/2].milk <<endl;    }    return 0;}

                                             
0 0
原创粉丝点击