一道很简单的排序题目,我用sort函数去做,但是一直超时,请指点一下更快的做法。
给出n个整数,请找出其中较大的K个数。Input
第一行是两个整数n(10 ≤ n ≤ 10,000,000)和K(1 ≤ K ≤ 10000)。 第二行是n个整数,每个整数均在int表示范围之内。
Output
从小到大输出那较大的K个数,最后一个输出结果后面不带空格。
Sample Input
10 4
0 1 -5 6 -100 10 7 -1 3 8
Sample Output
6 7 8 10
本人用sort函数排序但仍超时的代码如下:
#include<bits/stdc++.h>
int a[10000000];
using namespace std;
int main()
{
int n,b,i;
scanf("%d%d",&n,&b);
for(i=0;i<n;i++)
scanf("%d",&a[i]);
sort(a,a+n);
for(i=n-b;i<n-1;i++)
{
printf("%d ",a[i]);
}
printf("%d\n",a[n-1]);
return 0;
}
求指点一下更快的做法。。。