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

// ConsoleApplication2.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "stdafx.h"
#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
#include<list>
#include<iterator>
#include<queue>
#include<stack>
#include<algorithm>
#include<forward_list>
using namespace std;



class Solution {
public:
	vector<int> GetLeastNumbers_Solution(vector<int> input, int k) {
		sort(input.begin(),input.end());
		vector<int> vec;
		if (k > input.size()) return vec;
		auto it = input.begin();
		
		for (int i = 0; i < k;i++)
		{
			if (it == input.end()) break;
			vec.push_back(*it);
			++it;
		}
		return vec;
	}
};

int main()
{

	Solution so;
	vector<int> input = { 4,5,1,6,2,7,3,8 };
	vector<int> result = so.GetLeastNumbers_Solution(input,4);
	for (auto it = result.begin(); it != result.end(); ++it)
		cout << *it << "  ";

	cout << endl;
	return 0;
}

注意:此处主要考察的是排序,我直接调用系统的sort方法进行排序。
      要多看堆排序、快排、冒泡等排序算法及其复杂度
posted @ 2016-10-26 17:33  wdan2016  阅读(2027)  评论(0编辑  收藏  举报