zoukankan      html  css  js  c++  java
  • 九度OJ 1157:中位数 (中位数、排序)

    时间限制:1 秒

    内存限制:32 兆

    特殊判题:

    提交:2188

    解决:1294

    题目描述:

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

    输入:

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

    输出:

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

    样例输入:
    4
    10
    30
    20
    40
    3
    40
    30
    50
    4
    1
    2
    3
    4
    0
    样例输出:
    25
    40
    2
    来源:
    2011年北京大学计算机研究生机试真题

    思路:

    用快速排序,然后找出中位数。

    我这个代码是最早写的,用的冒泡,效率较低。


    代码:

    #include <stdio.h>
     
    #define M 10000
     
    int main(void)
    {
        int a[M];
        int n, i, j, tmp;
     
        while (scanf("%d", &n) != EOF)
        {
            if (n == 0)
                break;
            for (i=0; i<n; i++)
                scanf("%d", &a[i]);
     
            for (i=0; i<n-1; i++)
            {
                for (j=0; j<n-1-i; j++)
                {
                    if (a[j] > a[j+1])
                    {
                        tmp = a[j];
                        a[j] = a[j+1];
                        a[j+1] = tmp;
                    }
                }
            }
     
            //for (i=0; i<n; i++)
            //  printf("%d	", a[i]);
     
            printf("%d
    ", (n%2)==0 ? (a[n/2]+a[n/2-1])/2 : a[n/2]);
        }
     
        return 0;
    }
    /**************************************************************
        Problem: 1157
        User: liangrx06
        Language: C
        Result: Accepted
        Time:550 ms
        Memory:912 kb
    ****************************************************************/


    编程算法爱好者。
  • 相关阅读:
    Web Service接口设计(转)
    DataTable绑定到GridView时,RowDataBound事件
    SQLiteHelper
    SQL FOR XML子句的各种用法
    公历转农历函数
    SQL里变量的声明以及常用函数举例
    Python 与 Matlab混合语言编程资料
    Iterator和Generator学习心得(二)转
    python26 调用mysql 5.1
    转:程序员能力矩阵
  • 原文地址:https://www.cnblogs.com/liangrx06/p/5083870.html
Copyright © 2011-2022 走看看