问题标题: 酷町堂:3812

0
0
已解决
李云昊
李云昊
中级守护
中级守护

#include <iostream>
using namespace std;
int main()
{
int n,a[5000001];
cin>>n;
for(int i=1;i<=n;i++)
{
cin>>a[i];
}
for(int i=1;i<=n;i++)
{
int x=1;
for(int j=1;j<=n-i;j++)
{
if(a[j]>a[j+1])
{
    x++;
swap(a[j],a[j+1]);
}
}
if(x==1)  break;
}
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
}
超时    超时


0
已采纳
杨陈卓
杨陈卓
新手天翼
新手天翼

0<n<500000;这是数据范围,这样写肯定超时。

题中说高考分数都在100到900之间,分数没有小数,可以考虑用桶排序。

大体思路:b[i]表示此序列中存在i,边输入,边标记,即b[a[i]]=1;

最后循环输出,100到900,若被标记,则输出一次。

0
0
李明翰
李明翰
新手光能
新手光能

肯定超时,不能用这种排序

我要回答