题目描述

输入 n 个整数,输出其中最小的 k 个。

例如输入 1、2、3、4、5、6、7、8 这 8 个数字,则最小的 4 个数字为 1、2、3 和 4。

解法思路

最直接的做法是先把所有输入整数读入一个容器,然后对整个序列进行排序,最后按升序取前 k 个元素即可。对于数据规模较小的情况,这种实现足够清晰,也容易一次写对。

参考代码(C++)

#include <iostream>
                #include<vector>
                using namespace std;
                
                
                /*by hk 15-7-1*/
                
                int main(int argc, char *argv[])
                {
                	int n;
                	int k;
                	vector<int > data;
                	cin>>k;
                	while(cin>>n)
                	{
                		data.push_back(n);
                	}
                
                	sort(data.begin(),data.end());
                
                	for(int i=0;i<k;i++)
                	{
                		cout<<data[i]<<" ";
                	}
                
                
                	return 0;
                }