算法提高 前10名

/*

问题描述
数据很多,但我们经常只取前几名,比如奥运只取前3名。现在我们有n个数据,请按从大到小的顺序,输出前10个名数据。
输入格式
两行。
第一行一个整数n,表示要对多少个数据
第二行有n个整数,中间用空格分隔。表示n个数据。
输出格式
一行,按从大到小排列的前10个数据,每个数据之间用一个空格隔开。
样例输入
26
54 27 87 16 63 40 40 22 61 6 57 70 0 42 11 50 13 5 56 7 8 86 56 91 68 59
样例输出
91 87 86 70 68 63 61 59 57 56
数据规模和约定
10<=n<=200,各个整数不超出整型范围

*/

#include <stdio.h>
void shuru(int [] , int );
void paixu(int [] , int );
void shuchu(int [] , int );

int main(void)
{
	int n;
	scanf("%d",&n);
	int sj[250];
	shuru( sj , n );
	paixu( sj ,n);
	shuchu( sj , 10);
    return 0;
}
void paixu(int a[] , int n)
{
	int i,j;
	for(i=0;i<n-1;i++)
	{
		for(j=0;j<n-i-1;j++)
		{
			if(a[j]<a[j+1])
			{
				int tmp;
				tmp=a[j];
				a[j]=a[j+1];
				a[j+1]=tmp;
			}
			
		}
	}
}

void shuchu(int s[] , int n)
{
	int i;
	for( i = 0 ; i < n ; i++)
	{
		printf("%d " ,s[i]);
	}
}
void shuru(int s[] , int n )
{
	int i;
	for(i=0 ; i < n; i++)
	{
		scanf("%d",&s[i]);
	}
}

 

展开阅读全文

没有更多推荐了,返回首页