求一堆数中的中位数
输入格式:第一行一个数字n,接下来n行每行一个数
输出格式:输出一个中位数
输入样例:
5
2
4
1
3
5
输出样例:
3
快排模板题。
#include<iostream>
#include<cstdio>
#include<algorithm>
using namespace std;
int main()
{
int a[10001],i,n;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d",&a[i]);
sort(a+1,a+n+1);
printf("%d\n",a[(1+n)/2]);
return 0;
}
按快排原理手写一个快排代码
void quicksort(int left,int right)
{
if(left>=right) return ;
else
{
int i=left;
int j=right;
int temp=data[left];
while(i!=j)
{
while(i<j&&data[j]>=temp) j--;
while(i<j&&data[i]<=temp) i++;
if(i!=j)
{
int t=data[i];
data[i]=data[j];
data[j]=t;
}
}
data[left]=data[i];
data[i]=temp;
quicksort(left,i-1);
quicksort(i+1,right);
return ;
}
}