九度oj 1371 最小的K个数(快排)

来源:互联网 发布:tv263网络电视 编辑:程序博客网 时间:2024/05/21 14:58
题目1371:最小的K个数

时间限制:1 秒

内存限制:32 兆

特殊判题:

提交:5196

解决:1096

题目描述:

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

输入:

每个测试案例包括2行:

第一行为2个整数n,k(1<=n,k<=200000),表示数组的长度。

第二行包含n个整数,表示这n个数,数组中的数的范围是[0,1000 000 000]。

输出:

对应每个测试案例,输出最小的k个数,并按从小到大顺序打印。

样例输入:
8 44 5 1 6 2 7 3 8
样例输出:
1 2 3 4
题目大意:给出n个数,输出最小的k个数思路:用快排排序,然后输出前k个数,要注意k>n的情况本来以为用快排会超时,要用堆排序,谁知道居然过了,在研究一下堆排序2015,1,5
#include<stdio.h>#include<algorithm>using namespace std;int a[210000];int main(){int n,k,i;while(scanf("%d%d",&n,&k)!=EOF){for(i=0;i<n;i++)scanf("%d",&a[i]);sort(a,a+n);if(n>k){for(i=0;i<k;i++){if(i!=k-1)printf("%d ",a[i]);else printf("%d\n",a[i]);}}else{for(i=0;i<n;i++){if(i!=n-1)printf("%d ",a[i]);else printf("%d\n",a[i]);}}}return 0;}


0 0
原创粉丝点击