zoukankan      html  css  js  c++  java
  • 计算机考研复试 中位数

    题目描述

    中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

    输入描述:

    该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据包含的数据个数,1<=N<=10000.
    接着N行为N个数据的输入,N=0时结束输入

    输出描述:

    输出中位数,每一组测试数据输出一行
    示例1

    输入

    4
    10
    30
    20
    40
    3
    40
    30
    50
    4
    1
    2
    3
    4
    0
    

    输出

    25
    40
    2




    //计算机考研复试 中位数
    /*
        水题,练习下快排。
    */
    #include<iostream>
    #include<vector>
    using namespace std;
    
    void quickSort(vector<int>&v,int low,int high){    //快速排序,注意:如果这里用向量的话得加引用
        int i=low,j=high;
        if(low<high){
            int tmp=v[low];
            while(i<j){    //一趟排序
                while(j>i&&v[j]>tmp) --j;
                if(i<j){
                    v[i]=v[j];
                    ++i;
                }
                while(i<j&&v[i]<tmp) ++i;
                if(i<j){
                    v[j]=v[i];
                    --j;
                }
            }
            v[i]=tmp;
            quickSort(v,low,i-1);
            quickSort(v,i+1,high);
        }
    }
    
    int main(){
        int N=0;
        while( cin>>N&&N!=0){
            vector<int>v(N);
            for(int i=0;i<N;++i)
                cin>>v[i];
            //sort(v.begin(),v.end());
            quickSort(v,0,v.size()-1);    //升序排序
            if(N%2==0)   //偶数个,输出最中间两个数的平均数
                cout<<(v[N/2]+v[N/2-1])/2<<endl;
            else   //奇数个,输出最中间的平均数
                cout<<v[N/2]<<endl;
        }
        return 0;
    }
  • 相关阅读:
    NOIP1998提高组——挖地雷
    模板——EXBSGS
    vue 知识点
    jq_js
    ruby 基础知识(一)
    idea maven pom配置文件
    .net core dapper (5)
    .net core dapper (4)
    .net core dapper (3)
    .net core dapper (2)
  • 原文地址:https://www.cnblogs.com/parzulpan/p/10079961.html
Copyright © 2011-2022 走看看