题目描述
对输入的n个数进行排序并输出。
输入描述:
输入的第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。
输出描述:
可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。
每组测试数据的结果占一行。
示例1
输入
4
1 4 3 2
输出
1 2 3 4
使用C++11,编写冒泡 排序
#include<stdio.h>
int main(){
int n;//输入n个数,接收n
int buf[100];//保存排序成功后的数字
while(scanf("%d",&n)!=EOF){//n前面加上&
for(int i = 0;i<n;i++){
scanf("%d",&buf[i]);//接收输入的n个数
}
//现在进行排序
//分析:输入的数字范围为(1~100)
//那么使用冒泡排序的时间复杂度为O(100*100) < 百万级别
//占用空间复杂度为:int-->32bit*100<--数组长度,的内存 < 限定内存空间大小32MB
//所以冒泡排序符合要求,使用冒泡排序进行作答
int temp = 0;//定义临时变量
for(int i = 0;i<n;i++){//整个冒泡排序的方法是固定的,记下来
for(int j = 0;j<n-i-1;j++){
if (buf[j]>buf[j+1]){
temp = buf[j];
buf[j] = buf[j+1];
buf[j+1] = temp;
}
}
}
//排序完成,将排好序的数进行输出
for(int i=0;i<n;i++){
printf("%d ",buf[i]);//记得每个数后面加上空格
}
printf("\n");//打印完毕级的换行
}
return 0;
}
直接调用快速排序库函数
#include<stdio.h>
#include<algorithm>//C++已经编写好了快速排序库函数,只需要调用该函数
using namespace std;//必须写上
int main(){
int n;//输入n个数,接收n
int buf[100];//保存排序成功后的数字
while(scanf("%d",&n)!=EOF){
for(int i = 0;i<n;i++){
scanf("%d",&buf[i]);//接收输入的n个数
}
sort(buf,buf+n);//(起始地址,结束地址)
//排序完成,将排好序的数进行输出
for(int i=0;i<n;i++){
printf("%d ",buf[i]);//记得每个数后面加上空格
}
printf("\n");//打印完毕级的换行
}
return 0;
}
自定义排序规则
#include<stdio.h>
#include<algorithm>//C++已经编写好了快速排序库函数,只需要调用该函数
using namespace std;
bool cmp(int x,int y){//定义排序规则,当cmp返回true时,第一个参数会排列在第二个参数之前,即升序排列
return x<y;
}
int main(){
int n;//输入n个数,接收n
int buf[100];//保存排序成功后的数字
while(scanf("%d",&n)!=EOF){
for(int i = 0;i<n;i++){
scanf("%d",&buf[i]);//接收输入的n个数
}
sort(buf,buf+n,cmp);//(起始地址,结束地址),表明使用自定义的排列规则
//排序完成,将排好序的数进行输出
for(int i=0;i<n;i++){
printf("%d ",buf[i]);//记得每个数后面加上空格
}
printf("\n");//打印完毕级的换行
}
return 0;
}