总时间限制: 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; }