问题标题: 酷町堂:1153 数据分析(median)(为神马我的代码超时了????)

1
0
已解决
屠景瑞
屠景瑞
新手光能
新手光能

 

本蒟蒻超时55分的代码
#include<iostream>
#include<cmath>
using namespace std;
int a[30010],n;
bool mark;
void px(int a[],int n)
{
	for(int i=0;i<n-1;i++)
    {
    	mark=true;
        for(int j=0;j<n-i-1;j++)
        {
            if(a[j]>a[j+1])
            {
				swap(a[j],a[j+1]);
        		mark=false;
			}
		}
		if(mark)	break;
	}
}
int main()
{ 
	cin>>n;
	for(int i=0;i<n;i++)
		cin>>a[i];
	px(a,n);
	if(n%2==0) 
		cout<<(a[int(n/2)-1]+a[int(n/2)])/2;
	else
		cout<<a[int(n/2)];
    return 0;
}

本蒟蒻不会sort().

请各位dalao说些不要用sort()的方法。

萌新求助QwQ。

@陆麟瑞

@蒋智航

屠景瑞在2018-10-06 12:23:30追加了内容

我一脸懵逼

两眼茫然

    


1
已采纳
张元宝
张元宝
修练者
修练者

额,你居然不会用 sort , 好吧

先排序,

如果是奇数, cout<<a[n/2+1];

如果是偶数,cout<<(a[n/2]+a[n/2+1])/2;

sort 就是 快速排序,定义一个数组 a[100],如果是你要从 0~n-1  排序 ,那就是sort(a,a+n)。

如果是你要从 1~n  排序 ,那就是sort(a+1,a+n+1) 。这样是从小到大排序。
sort( a+? , a+? ) 是控制位置的。

如果要从大到小排序,可以弄一个函数

bool cmp(int x,int y){

     return x>y;

}

排序时 sort(a,a+n,cmp);

0
我要回答