1235 - C语言10.5

读入n个整数,使用选择排序法对这些整数由大到小排序并输出。

题目输入

第一行有一个整数n,第二行包含了n个用空格隔开的整数。输入保证n不超过100。

题目输出

将这n个数按从大到小顺序输出,每个数之后输出一个空格。

请注意行尾输出换行。

输入/输出样例

题目输入

10
2 3 4 5 6 7 8 9 1 0 

题目输出

9 8 7 6 5 4 3 2 1 0 

C语言解答

#include<stdio.h>
void sort(int a[],int x)
{
	int i,j,t;
	for(i=0;i<x;i++)
		for(j=i+1;j<x;j++)
		{
			if(a[j]>a[i])
			{
				t = a[i];
				a[i]=a[j];
				a[j]=t;			
			}		
		}
}
void main()
{
	int n,i,a[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
		scanf("%d",&a[i]);		
	sort(a,n);
	for(i=0;i<n;i++)
		printf("%d ",a[i]);	
	printf("\n");
}

C++解答

#include <stdio.h>
int main() {
	int a[100];
	int i, n;
	void sort(int x[], int n);
	scanf("%d", &n);
	for (i = 0;i < n;i++)
		scanf("%d", &a[i]);
	sort(a, n);
	for (i = 0;i < n;i++)
		printf("%d ", a[i]);
	printf("\n");
	return 0;
}
/* 选择排序过程 */
void sort(int x[], int n) {
	int i, j, k, t;
	for (i = 0;i < n - 1;i++) {
		/* 在剩余项中寻找最大的一项,并调换到第i位 */
		k = i;
		for (j = i + 1;j < n;j++)
			if (x[j] > x[k]) k = j;
		if (k != i) {
			t = x[i]; x[i] = x[k]; x[k] = t;
		}
	}
}

时间限制 1 秒
内存限制 32 MB
讨论 统计
上一题 下一题