问题描述:
给定一个长度为n的数列,将这个数列按从小到大的顺序排列。1<=n<=200
输入格式:
第一行为一个整数n。
第二行包含n个整数,为待排序的数,每个整数的绝对值小于10000。
输出格式:
输出一行,按从小到大的顺序输出排序后的数列。
样例输入:
5
8 3 6 4 9
样例输出:
3 4 6 8 9
代码部分:
第一步确定数组长度:题目要求的是长度在1<=n<=200这个范围,因此定义长度为200
#include<stdio.h>
#define N 200
第二步:接收n用来表示数组的长度;
其次是通过循环接收数组的各项元素
int main() {
int i,j,n, temp;
int a[N];
scanf("%d",&n);
for (i = 0;i<n; i++) {
scanf("%d", &a[i]);
}
}
第三步:排序(本项目的难点)
本次使用的是冒泡排序,将数字大的往后移,代码如下:
for ( i = 0; i < n - 1; i++) {
for (j = 0; j < n-i-1; j++) {
if(a[j]>a[j+1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
第四步:输出排序后的数组结果(遍历数组):
注意!!!:输出的结果为3 4 6 8 9,中间有空格隔开,这个会影响这道题的结果。因此,在输出时,注意添加空格作为间隔。
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
完整代码如下:
#include<stdio.h>
#define N 200
int main() {
int i,j,n, temp;
int a[N];
scanf("%d",&n);
for (i = 0;i<n; i++) {
scanf("%d", &a[i]);
}
for ( i = 0; i < n - 1; i++) {
for (j = 0; j < n-i-1; j++) {
if(a[j]>a[j+1]) {
temp = a[j];
a[j] = a[j + 1];
a[j + 1] = temp;
}
}
}
for (i = 0; i < n; i++) {
printf("%d ", a[i]);
}
return 0;
}