程序员面试100题(算法)之输入n个整数,输出其中最小的k个

// Test3.cpp : 定义控制台应用程序的入口点。
// 程序员面试100题(算法)之输入n个整数,输出其中最小的k个

#include "stdafx.h"
#include
#include
#include

using namespace std;

void findKLeastNumbers(multiset< int, greater > &container, vector &vec, int k)
{
	container.clear();

	if(vec.size() < k || k <= 0 || vec.empty())
		cout << "Please check your parameters" << endl;

	vector::iterator iter = vec.begin();

	for(; iter != vec.end(); iter++)
	{
		if(container.size() < k)
		{
			container.insert(*iter);
		}
		else
		{
			multiset< int, greater >::iterator cIter = container.begin();

			if(*iter < *cIter)
			{
				container.erase(cIter);
				container.insert(*iter);
			}
		}
	}
}

void createVector(vector &vec)
{
	int num;

	cout << "Please input the numbers(65536 means ending)" <> num)
	{
		if(65536 == num)
			break;
		vec.push_back(num);
	}
}

void printMultiset(multiset< int, greater > numbersSet)
{
	multiset< int, greater >::iterator iter = numbersSet.begin();

	for(; iter != numbersSet.end(); iter++)
	{
		cout << *iter << "\t";
	}

	cout << endl;
}

int _tmain(int argc, _TCHAR* argv[])
{
	int k =0;
	vector vec;
	multiset< int, greater > container;

	createVector(vec);
	cout << vec.size() << endl;

	cout << "Please input the k:" <> k;
	findKLeastNumbers(container, vec, k);
	cout << "The least k numbers are:" <

你可能感兴趣的:(程序员面试)