选择法排序(求解)

要求将给定的n个整数从大到小排序后输出。

输入格式:

输入第一行给出一个不超过10的正整数n。第二行给出n个整数,其间以空格分隔。

输出格式:

在一行中输出从大到小有序的数列,相邻数字间有一个空格,行末不得有多余空格。

输入样例:

4
5 1 7 6

结尾无空行

输出样例:

7 6 5 1

结尾无空行 

源代码如下:

#include<stdio.h>
#define MAXN 10
int main()
{
	int i, n, j, temp, max;
	int a[MAXN];
	scanf("%d", &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;                    /*排放位置*/

	}
	for(i=0; i<n; i++){
		if(i==0) printf("%d", a[0]);
		else printf(" %d", a[i]);     /*输出*/
	}
} 

运行结果正确:

 

以上是我改正后的程序,最初程序如下:

#include<stdio.h>
#define MAXN 10
int main()
{
	int i, n, j, temp, max;
	int a[MAXN];
	scanf("%d", &n);
	for(i=0; i<n; i++){
		scanf("%d", &a[i]); 
	}


	for(i=0; i<n;i++){
		max=a[i];
		for(j=i+1; j<n-1; j++){
			if(a[j]>max){
				max=a[j];
			}
		}                                /*选出最大值*/
		temp=a[i];
		a[i]=a[j];
		a[j]=temp;
	}                                    /*排序*/


	for(i=0; i<n; i++){
		if(i==0) printf("%d", a[0]);
		else printf(" %d", a[i]);
	}
} 

但是这个程序的运行结果是错误的:

 求解!!!帮帮孩子吧!!!

猜你喜欢

转载自blog.csdn.net/weixin_62461808/article/details/121591964
今日推荐