這是題目:
2:尋找中位數
查看 提交 統計 提問
總時間限制: 1000ms 內存限制: 65536kB
描述
在N(1<=N<10,000且N爲奇數)個數中,找到中位數。
輸入
第1行:N
第2至N+1行:每行是一個整數
輸出
第一行:中位數
樣例輸入
5
2
4
1
3
5
樣例輸出
3
===========================================================================
這...沒什麼好說的,快速排序函數,必須對快排函數十分熟練才行。
代碼清單:
#include <iostream>
#include <cstdio>
using namespace std;
#define MAXN 10000
void quickSort(int arr[], int m, int n)
{
int pivot=arr[(m+n)/2];
int i=m;
int j=n;
int temp;
do
{
while(arr[j]>pivot && j>m) --j;
while(arr[i]<pivot && i<n) ++i;
if (i<=j)
{
temp=arr[j];
arr[j]=arr[i];
arr[i]=temp;
--j;
++i;
}
} while (i<=j);
if(i<n) quickSort(arr, i, n);
if(j>m) quickSort(arr, m, j);
}
int main()
{
freopen("D:\\in.txt", "r", stdin);
freopen("D:\\out.txt", "w", stdout);
int n;
int a[MAXN];
scanf("%d", &n);
for (int i=0; i<n; ++i)
scanf("%d", &a[i]);
quickSort(a, 0, n-1);
printf("%d", a[n/2]);
return 0;
}