排序——輸出中間數

輸入

僅包括一組測試數據,第一行一個正整數N(1N10 000),接下來N行,每行一個正整數不會超過,第i+1行的數字代表第i頭牛的產奶量。

輸出

處於中間的牛的產奶量

解題思路:得到有序的數列,然後找出中間的那個數字就可以了。

源程序

#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstdlib>
using namespace std;
typedef struct{
    int Milk;  //奶牛的產奶量
	int num;       //奶牛編號
}COW;
COW cow[10000];
bool cmp(COW A,COW B);  

int main()
{
	int N;
	while(scanf("%d",&N)!=EOF)
	{
		for(int i=1;i<=N;i++)
		{
			scanf("%d",&cow[i].Milk);
			cow[i].num = i;
		}
		sort(cow+1,cow+1+N,cmp); //sort()函數對結構體COW進行排序。
		printf("%d\n",cow[(N+1)/2].Milk);
	}
	return 0;
}

bool cmp(COW A,COW B)        //排序規則爲按照產奶量從小到大排序。若產奶量相同,則按照牛的編號從小到大排序。
{
	if(A.Milk < B.Milk) 
		return true;
	if(A.Milk == B.Milk&&A.num < B.num)
		return true;
	return false;
}

 

運行:

截圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章