问题标题: 酷町堂:2634 从大到小排序1

0
0
已解决
周俊豪
周俊豪
高级光能
高级光能

dalao帮帮忙!

桶排写:for(int i=1;i<=n;i++){
        cin>>t;
        a[t]++;
    }
    for(int i=1;i>=100000;i++){
        while(a[i]>0){
            cout<<i<<" ";
            a[i]--;
        }
    }

Runtime Error:0分

快排写:bool cmp(int a,int b){
    return a>b;
}
int main(){
    int n,a[101000];
    cin>>n;
    for(int i=0;i<=n-1;i++){
        cin>>a[i];
    }
    sort(a+1,a+n+1,cmp);
    for(int i=0;i<=n-1;i++){
    cout<<a[i]<<" ";
}

样例没过!

简排写:

int a[100000],n;
    cin>>n;
    for(int i=1;i<=n;i++){
        cin>>a[i];
    }
    for(int i=1;i<=n-1;i++){
        for(int j=1;j<=n-i;j++){
            if(a[j]<a[j+1]){
                swap(a[j],a[j+1]);
            }
        }
    }
    for(int i=1;i<=n;i++){
        cout<<a[i]<<" ";
    }

Time Limit Exceeded:30分

.............

大佬帮帮忙啊!

周俊豪在2018-08-16 11:19:31追加了内容

写错了;

桶排是:for(int i=1;i<=n;i++){
        cin>>t;
        a[t]++;
    }
    for(int i=1;i<=100000;i++){
        while(a[i]>0){
            cout<<i<<" ";
            a[i]--;
        }
    }


0
已采纳
宫西诚
宫西诚
修练者
修练者

简排
    for(int i=1;i<=n;i++)
    cin>>a[i];
    for(int i=1;i<=n-1;i++)
    {
        for(int j=i+1;j<=n;j++)
        if(a[i]<a[j])
        swap(a[i],a[j]);
    }
    for(int i=1;i<=n;i++)
    cout<<a[i]<<" ";
  超时30分

这题不能用桶排,数据范围太大10000000,不可以定义一个为a[10000000]的数组;

这题只能用快排来写

函数
bool cmp(long long a,long long b)
{
    return a>b;
}

主函数
int main()
{
    long long n,a[100001];
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i]; 
    } 
    sort(a+1,a+n+1,cmp);
    for(int i=1;i<=n;i++)
    cout<<a[i]<<" ";
 } 

你是从a[0]开始输入的,所以sort语句应该改为sort(a,a+n,cmp);

我是从1开始输入的,所以可以是sort(a+1,a+n+1,cmp);

望采纳,谢谢

0
李源徽
李源徽
新手光能
新手光能

把  for(int i=1;i>=100000;i++)改成  for(int i=1;i>=100000;i--)。
    for(int i=1;i>=100000;i++)明显是个死循环呀!

李源徽在2018-08-16 11:22:49追加了内容

for(int i=1;i>=100000;i--)改成for(int i=100000;i>=1;i--)

0
我要回答