在統計學的世界中,中間數(median)扮演一個重要的角色。 根據定義:中間數就是在一連串已由小到大排序的數字中,排在中間
的那一個數。例如:在{1,3,4,9,11}中4就是中間數。萬一有偶數個數字,我們定 義中間數就是位於中間的那2個數的和除以2(而且
只取整數部分)。例如:在{1,2,3,6,7,8}中{3,6}是位於中間的2個數,所以中間數就是 (3+6)/2=4。
輸入說明 :的那一個數。例如:在{1,3,4,9,11}中4就是中間數。萬一有偶數個數字,我們定 義中間數就是位於中間的那2個數的和除以2(而且
只取整數部分)。例如:在{1,2,3,6,7,8}中{3,6}是位於中間的2個數,所以中間數就是 (3+6)/2=4。
輸入包含了N個(N<10000)的整數。
輸出說明 :
對每一個輸入,請輸出到現在為止已輸入的數的中間數。
範例輸入 :
1 3 4 60 70 50 2
範例輸出 :
1 2 3 3 4 27 4
/**********************************************************************************//* Problem: c010 "What is the Median?" from ACM 10107
*//* Language: C
*//* Result: AC (418ms, 394KB) on ZeroJudge
*//* Author: diiuuli520 at 2008-08-17 02:21:34
*//**********************************************************************************/#include<stdio.h>#include<stdlib.h>int main(void){ int a[100000],b,y=0,z,i=0,c,j,x; while(scanf("%d",&a[i])!=EOF){ y++; x=i; for(j=i;j>0;j--){ if(a[x]<a[x-1]){ z=a[x]; a[x]=a[x-1]; a[x-1]=z; x-=1; } else j==0; } if(y==1) printf("%d\n",a[i]); else if(y%2==0){ b=y/2; z=a[b-1]+a[b]; z/=2; printf("%d\n",z); } else{ b=y/2; printf("%d\n",a[b]); } i++; } return(0); }
沒有留言:
張貼留言