题目1157:中位数

题目描述:

中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数(或最中间两个数据的平均数).

给出一组无序整数,求出中位数,如果求最中间两个数的平均数,向下取整即可(不需要使用浮点数)

输入:

该程序包含多组测试数据,每一组测试数据的第一行为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

C++代码:

#include<iostream>
#include <algorithm>
using namespace std;
int main()
{
    int num[10001];
    int n;
    while(cin>>n,n)
    {
        for(int i=0;i<n;i++)
            cin>>num[i];
        sort(num,num+n);
        if(1==n%2)
            cout<<num[n/2]<<endl;
        else
            cout<<(num[n/2]+num[n/2-1])/2<<endl;
    }
    return 1;
}
/**************************************************************
    Problem: 1157
    User: Carvin
    Language: C++
    Result: Pending
****************************************************************/

Java代码:

//package oj1157;

import java.util.Arrays;
import java.util.Scanner;

public class Main{
    public static void main(String args[]){
        Scanner in=new Scanner(System.in);
        while(in.hasNext()){
            int n=in.nextInt();
            if(0==n)
                break;                  //n=0是程序结束
            int []num=new int [n];
            for(int i=0;i<n;i++)
                num[i]=in.nextInt();
            Arrays.sort(num);
            int mid=(n-1)/2;
            if(0!=mid/2)
                System.out.println(num[mid]);
            else {
                System.out.println((num[mid]+num[mid+1])/2);
            }
        }//while
    }//main
}//Main
/**************************************************************
    Problem: 1157
    User: Carvin
    Language: Java
    Result: Pending
****************************************************************/

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-11-09 08:48:57

题目1157:中位数的相关文章

LeetCode题目----求中位数---标签:Array

题目难度---困难 题目要求: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 . 请找出这两个有序数组的中位数.要求算法的时间复杂度为 O(log (m+n)) . 思路:第一眼看到题目两个数组求中位数,看似很复杂,但是仔细一想,两个数组合在一块不久行了?然后合并后的数组给他排序,进而判断是奇数位数组还是偶数位数组 ok!代码奉上: public static double findMedianSortedArrays(int[] nums1, int[] nums2) {

NYOJ题目124中位数

------------------------------------- 排序取中间数即可 AC代码: 1 import java.util.Arrays; 2 import java.util.Scanner; 3 4 public class Main { 5 6 public static void main(String[] args) { 7 8 Scanner sc=new Scanner(System.in); 9 10 int times=sc.nextInt(); 11 wh

POJ 题目1157 LITTLE SHOP OF FLOWERS(DP)

LITTLE SHOP OF FLOWERS Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 19457   Accepted: 8966 Description You want to arrange the window of your flower shop in a most pleasant way. You have F bunches of flowers, each being of a different

78 无序数组的中位数

[本文链接] http://www.cnblogs.com/hellogiser/p/median-of-unsorted-array.html [题目] 中位数即是排过序后的处于数组最中间的元素. 不考虑数组长度为偶数的情况.设集合元素个数为n. [分析] 大体思路:思路1) 排序法 n*lgn 把无序数组排好序,取出中间的元素            时间复杂度 采用普通的比较排序法 O(N*logN)            如果采用非比较的计数排序等方法, 时间复杂度 O(N), 空间复杂度

找中位数

题目描述 中位数定义:一组数据按从小到大的顺序依次排列,处在中间位置的一个数 (或最中间两个数据的平均数). 给出一组无序整数,求出中位数,如果求最 中间两个数的平均数,向下取整即可(不需要使用浮点数) 输入描述: 该程序包含多组测试数据,每一组测试数据的第一行为N,代表该组测试数据 包含的数据个数,1<=N<=10000. 接着N行为N个数据的输入,N=0时结束输入 输出描述: 输出中位数,每一组测试数据输出一行 #include <iostream> using namespa

算法(第四版)C# 习题题解——2.4

写在前面 整个项目都托管在了 Github 上:https://github.com/ikesnowy/Algorithms-4th-Edition-in-Csharp 查找更为方便的版本见:https://alg4.ikesnowy.com/ 这一节内容可能会用到的库文件有 PriorityQueue,同样在 Github 上可以找到. 善用 Ctrl + F 查找题目. 习题&题解 2.4.1 题目 用序列 P R I O * R * * I * T * Y * * * Q U E * *

ACM题目————中位数

题目描述 长为L的升序序列S,S[L / 2]为其中位数. 给出两个等长升序序列S1和S2,求两序列合并并排序后的中位数. 输入 多组数据,每组第一行为n,表示两个等长升序序列的长度. 接下来n行为升序序列S1的元素,再接下来n行为升序序列S2的元素. 1 <= n <= 10 ^ 5,S内容为整数. 不超过5组数据. 输出 每组数据,输出合并并排序后的序列的中位数. 样例输入 5 11 13 15 17 19 2 4 6 8 20 样例输出 11 本来以为是可以直接排序过,但是没想到数据卡的

poj 动态规划题目列表及总结

此文转载别人,希望自己能够做完这些题目! 1.POJ动态规划题目列表 容易:1018, 1050, 1083, 1088, 1125, 1143, 1157, 1163, 1178, 1179, 1189, 1208, 1276,1322, 1414, 1456, 1458, 1609, 1644, 1664, 1690, 1699, 1740(博弈),1742, 1887, 1926(马尔科夫矩阵,求平衡), 1936, 1952, 1953, 1958, 1959, 1962, 1975,

2-13. 两个有序序列的中位数(25)(ZJUPAT )

题目链接:http://pat.zju.edu.cn/contests/ds/2-13 已知有两个等长的非降序序列S1, S2, 设计函数求S1与S2并集的中位数.有序序列A0, A1-AN-1的中位数指A(N-1)/2的值,即第[(N+1)/2]个数(A0为第1个数). 输入格式说明: 输入分3行.第1行给出序列的公共长度N(0<N<=100000),随后每行输入一个序列的信息,即N个非降序排列的整数.数字用空格间隔. 输出格式说明: 在一行中输出两个输入序列的并集序列的中位数. 样例输入与