您的位置:首页 > 编程语言 > C语言/C++

算法分析与设计C++ 寻找中位数 (快速排序版)

2019-09-25 20:42 921 查看

总时间限制: 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
;
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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: