题目详情 - 排序(NOIP提交格式验证) - Keda (kedaoi.cn)
问题描述
给你 n 个整数,现在要你从小到大排序后输出
输入
第一行一个整数 n
接下来一行输入 n 个整数
输出
输出一行,为从小到大排序后的 n 个整数
样例
5
3 1 8 6 1
Copy
1 1 3 6 8
Copy
提示
数据范围与提示
70%的数据,1≤n≤2⋅10的3次方
100%的数,1≤n≤1⋅10的5次方≤n≤1⋅10的5次方,0≤ 需要排序的数 ≤500000
文件
输入文件名
sort.in
输出文件名
sort.out
注意
一定要用输入输出重定义!!!
freopen("sort.in","r",stdin);
freopen("sort.out","w",stdout);
非常重要!!!
因为这是一题NOIP系统的测试题。在比赛的时候,都会要求你使用文件输入输出,这个时候使用标准的输入输出就会因为找不到 .out
文件而判 0 分,并且请看好题,识别好文件名再写入代码(离比赛结束还有 30分钟时,监考老师也会要求你运行 checker.exe
来确认)。(转载至可达的张智闻同学,谢谢张智闻)
切记切记!
代码写法
无论什么都可以,但请注意时间限制,最好不要用算法复杂度高的方法做,会超时的!
sort函数:
#include<bits/stdc++.h>
using namespace std;
int a[10000001],n;
int main(){
freopen("sort.in","r",stdin);
freopen("sort.out","w",stdout);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i];
}
sort(a+1,a+n+1);
for(int i=1;i<=n;i++){
cout<<a[i]<<" ";
}
return 0;
}
冒泡:
#include<bits/stdc++.h>
using namespace std;
int main(){
freopen("sort.in","r",stdin);
freopen("sort.out","w",stdout);
int n,a[10001];
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
for(int i=1;i<=n;i++){
for(int j=i;j<=n;j++){
if(a[i]>a[j]) swap(a[i],a[j]);
}
}
for(int i=1;i<=n;i++) cout<<a[i]<<" ";
return 0;
}
结尾
部分内容转自可达“题解”功能