7-2 选择法排序 (20 分)
本题要求将给定的n个整数从大到小排序后输出。
输入格式:
输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。
输出格式:
在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。
输入样例:
4
5 1 7 6
输出样例:
7 6 5 1
#include<stdio.h>
int main()
{
int i, j, k, n, temp;
int a[10];
scanf("%d", &n);
for(i=0; i<n; i++)
scanf("%d", &a[i]);
for(k=0; k<n-1; k++){
j=k;
for(i=k+1; i<n; i++)
if(a[i]>a[j]) j=i;
temp=a[j];
a[j]=a[k];
a[k]=temp;
}
printf("%d", a[0]);
for(i=1; i<n; i++)
printf(" %d", a[i]);
return 0;
}
思路:
将所有数值中的最大值比较出并赋值给另一个变量,然后再在剩下的数值中继续比较求出在大值,题目需要在末尾不出现空格,于是我们可以先将最大值单独输出,然后以空格加数值的形式输出,即可满足要求。
图中的格式错误就是我之前将所有的数值都按照数值加空格的形式输出,所以在末尾会出现空格,不符合题意。改正之后就可以了。