# Sorting# Greedy

d153 - 六、智力测验

🔗 前往 ZeroJudge 原題

題目描述

題目要求計算一群奶牛智力測驗分數的中位數。如果奶牛數量為偶數,則輸出中間兩個分數中較小的一個。

解題思路

解題思路是先將所有奶牛的分數排序,然後根據奶牛數量是奇數還是偶數,輸出不同的結果。如果數量是奇數,則輸出中間的那個分數。如果數量是偶數,則輸出中間兩個分數中較小的那一個。使用 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]);
	}
}

Discussion