Mushroom OJ 6100题解
大家一起看一道题:
原题:这才叫排序
时间限制:2s
内存限制:128MB
1.题意:有n个数,把他们从小到大排序。
2.输入格式:第一行,只有一个数字n。 接下来n行,每行一个数。 n=3000000, 每个数<=500000
3.输出格式:N行,为从小到大排序后的数列
样例输入: 9 3 7 6 5 2 4 3 3 1
样例输出: 1 2 3 3 3 4 5 6 7
大家看一下n的大小,竟然有3000000,
也就意味着:只有快排和桶排能过
代码:
1.桶排
1 #include<cstdio> 2 using namespace std; 3 int n,a[500010],b,max=0,min=0; 4 int main() { 5 scanf("%d",&n); 6 for(int i=1; i<=n; i++) { 7 scanf("%d",&b); 8 a[b]++; 9 if(b>=max) max=b; 10 if(b<=min) min=b; 11 } 12 for(int i=min; i<=max; i++) { 13 for(int j=1; j<=a[i]; j++) { 14 printf("%d\n",i); 15 } 16 } 17 return 0; 18 }
| 时间 | 1108 MS |
| 空间 | 2124 KB |
2.系统库排序:
1 #include<cstdio> 2 #include<algorithm> 3 using namespace std; 4 int n,a[30000010]; 5 int main() { 6 scanf("%d",&n); 7 for(int i=1; i<=n; i++) scanf("%d",&a[i]); 8 sort(a+1,a+n+1); 9 for(int i=1; i<=n; i++) printf("%d\n",a[i]); 10 return 0; 11 }
| 时间 | 1247 MS |
| 空间 | 11892KB |

浙公网安备 33010602011771号