本题要求将给定的n个整数从大到小排序后输出。
输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。
输入样例:
4
5 1 7 6
输出样例:
7 6 5 1
思路:首先把第一个元素和其他所有元素依次比较,若更大则交换,这样就保证了第一个元素是最大的。然后再从第二个元素开始,仿照这样依次遍历下去就排序完成。
#include <stdio.h>
int main() {
int n, i, j, temp, max;
scanf("%d", &n);
int a[n];
for (i = 0; i < n; i++) {
scanf("%d", &a[i]);
}
for (i = 0; i < n; i++) {
max = i;
for (j = i + 1; j < n; j++) {
if (a[j] > a[max]) {
max = j;
}
}
temp = a[max];
a[max] = a[i];
a[i] = temp;
}
printf("%d", a[0]);
for (i = 1; i < n; i++) {
printf(" %d", a[i]);
}
return 0;
}