题目1202:排序
时间限制:1 秒
内存限制:32 兆
特殊判题:否
-
题目描述:
-
对输入的n个数进行排序并输出。
-
输入:
-
输入的第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。
输出:
-
可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。
每组测试数据的结果占一行。
样例输入:
-
4 1 4 3 2
样例输出:
-
1 2 3 4
来源:
- 2006年华中科技大学计算机保研机试真题
方法一:冒泡排序
#include <stdio.h>
int main()
{
int n;
int buf[100];//保存将要排序的数字
while(scanf("%d",&n)!=-1){ //输入n
for(int i=0;i<n;i++){
scanf("%d",&buf[i]);//输入要排序的n个整数
}
//冒泡排序
for(int i=0;i<n;i++){
for(int j=0;j<n-1-i;j++){
if(buf[j]>buf[j+1]){
int tmp = buf[j];
buf[j] = buf[j+1];
buf[j+1] = tmp;
}
}
}
for(int i=0;i<n;i++){
printf("%d ",buf[i]);//输出完成排序后的数字
}
printf("\n");//输出换行
}
}
/**************************************************************
Problem: 1202
User: zpy
Language: C
Result: Accepted
Time:20 ms
Memory:912 kb
****************************************************************/
方法二:使用sort函数
#include<stdio.h>
#include<algorithm>
using namespace std;
int main(){
int n;
int buf[100]; // n的取值范围 (1<=n<=100)
while(scanf("%d",&n) != EOF){
for(int i = 0;i < n;i ++){ //输入数组元素
scanf("%d",&buf[i]);
}
sort(buf,buf+n); //sort默认的是升序排列 ,相应的头文件是algorithom
for(int i = 0;i < n;i ++){
printf("%d ",buf[i]); //%d的后面留一个空格,满足题意要求
}
printf("\n");//输出换行
}
return 0;
}
/**************************************************************
Problem: 1202
User: zpy
Language: C++
Result: Accepted
Time:40 ms
Memory:1020 kb
****************************************************************/