d153 - 六、智力测验
題目描述
題目要求計算一群奶牛智力測驗分數的中位數。如果奶牛數量為偶數,則輸出中間兩個分數中較小的一個。
解題思路
解題思路是先將所有奶牛的分數排序,然後根據奶牛數量是奇數還是偶數,輸出不同的結果。如果數量是奇數,則輸出中間的那個分數。如果數量是偶數,則輸出中間兩個分數中較小的那一個。使用 std::sort 函數對分數進行排序,然後根據數量判斷輸出結果。
複雜度分析
- 時間複雜度: O(n log n) (主要來自排序)
- 空間複雜度: O(n) (用於儲存分數)
程式碼
#include <iostream>
#include <algorithm>
int b[40000];
int main(){
int a;
scanf("%d",&a);
while(scanf("%d",&a)>0){
for(int i=0;i<a;i++)
scanf("%d",&b[i]);
std::sort(b,b+a);
if(a%2==0)
printf("%d\n",b[a/2-1]);
else
printf("%d\n",b[a/2]);
}
}