版權聲明:本文為部落客原創文章,遵循 CC 4.0 BY-SA 版權協定,轉載請附上原文出處連結和本聲明。
本文連結:https://blog.csdn.net/weixin_42449444/article/details/85630499
題目描述:
中位數定義:一組資料按從小到大的順序依次排列,處在中間位置的一個數(或最中間兩個資料的平均數). 給出一組無序整數,求出中位數,如果求最中間兩個數的平均數,向下取整即可(不需要使用浮點數)
輸入描述:
該程式包含多組測試資料,每一組測試資料的第一行為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
複制
AC代碼:
#include <bits/stdc++.h>
using namespace std;
int main()
{
int N;
while(cin >> N && N)
{
int a[N];
for(int i = 0; i < N; i++)
{
cin >> a[i];
}
sort(a,a+N); //升序排列
if(N%2 != 0) //若數組是奇數個
{
cout << a[N/2] << endl;
}
else //若數組是偶數個
{
cout << (a[N/2]+a[N/2-1])/2 << endl;
}
}
return 0;
}
複制