總時間限制: 100ms 內存限制: 65535kB 描述 在N(1 <= N <= 100001 且N爲奇數)個數中,找到中位數。ios
輸入 第1行:N算法
第2行:N個整數 輸出 輸入的第2行N個整數的中位數。 樣例輸入 5 2 4 1 3 5 樣例輸出 3 提示 若使用時間複雜度大於 O(NlogN)的排序算法,會返回 Time Limit Exceeded。 來源 重慶科技學院 WJQspa
#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; }