總時間限制: 100ms 內存限制: 65535kB
描述
在N(1 <= N <= 100001 且N爲奇數)個數中,找到中位數。
輸入
第1行:N
第2行:N個整數
輸出
輸入的第2行N個整數的中位數。
樣例輸入
5
2 4 1 3 5
樣例輸出
3
提示
若使用時間複雜度大於 O(NlogN)的排序算法,會返回 Time Limit Exceeded。
來源
重慶科技學院 WJQ
#include<iostream>
using namespace std;
void q_sort(int *a, int l, int r){
if(l<r){
int i=l;
int j=r;
int x=a[i];
while(i<j){
while(i<j&&a[j]>=x)
{
j--;
}
if(i<j){
a[i]=a[j];
}
while (i<j&&a[i]<x)
{
i++;
}
if(i<j){
a[j]=a[i];
}
}
a[i]=x;
q_sort(a,l,i-1);
q_sort(a,i+1,r);
}
}
int main()
{
int n;
cin>>n;
int a[n];
for (int i = 0; i < n; i++)
{
cin>>a[i];
}
int mid = sizeof(a)/sizeof(a[0])/2;
q_sort(a,0,n);
cout<<a[mid];
return 0;
}