杭电1425sort

sort

Time Limit : 6000/1000ms (Java/Other)   Memory Limit : 65536/32768K (Java/Other)
Total Submission(s) : 284   Accepted Submission(s) : 43

Font: Times New Roman | Verdana | Georgia

Font Size:

Problem Description

给你n个整数,请按从大到小的顺序输出其中前m大的数。

Input

每组测试数据有两行,第一行有两个数n,m(0<n,m<1000000),第二行包含n个各不相同,且都处于区间[-500000,500000]的整数。

Output

对每组测试数据按从大到小的顺序输出前m大的数。

Sample Input

5 3
3 -35 92 213 -644

Sample Output

213 92 3
注意:
这里用sort函数要有3个头文件
#include<stdio.h>
#include<algorithm>
#include<iostream>
using namespace std;
用sort函数需定义数组a[10];n为排序的长度
sort(a,a+n);
sort只能从小到大排序,所以如果从大到小排的话,建议加一个cmp函数
具体看代码
#include<stdio.h>
#include<iostream>
#include<algorithm>
using namespace std;
bool cmp (int x,int y)
{
	return x>y;
}
int main()
{
	int n,i,a[100];
	scanf("%d",&n);
	for(i=0;i<n;i++)
	scanf("%d",&a[i]);
	sort(a,a+n,cmp);
	for(i=0;i<n-1;i++)
	printf("%d ",a[i]);
	printf("%d\n",a[n-1]);
	return 0;
}
x>y是从大到小,x<y从小到大。
 
 
这一题特别坑要数组清零需要注意一下
memset(a,0,sizeof(a));
a[>10000]数组要定义到外面,具体看代码
#include<stdio.h>
#include<string.h>
#include<iostream>
#include<algorithm>
using namespace std;
int a[1111111];
int cmp(int x,int y)
{
	return x<y;
}
int main()
{
	int n,i,m;
	while(scanf("%d %d",&m,&n)!=EOF)
	{	
	memset(a,0,sizeof(a));
		for(i=0;i<m;i++)
		{
			scanf("%d",&a[i]);
		}
		sort(a,a+m,cmp);
		for(i=m-1;i>m-n;i--)
		{
			printf("%d ",a[i]);
		}
		printf("%d\n",a[m-n]);
	}
	return 0;
}

你可能感兴趣的:(杭电1425sort)