成功需要不懈的追求,不能有丝毫放松。
胜利如果不能成为取得更大成就的工具,那对我们来说就是毫无意 义的凯旋,反而有害无益。
——摘自奥格.曼狄诺《羊皮卷》
5.查找最小的k 个元素
题目:输入n 个整数,输出其中最小的k 个。例如输入1,2,3,4,5,6,7 和8 这8 个数字,则最小的4 个数字为1,2,3 和4。
#include<iostream>
#include<vector>
#include<algorithm>
using namespace std;
void findnum(vector<int>& tempmin,int arr[],int length)
{
int num;
int i;
vector<int>::iterator iter;
cout<<"input the number:";
cin>>num;
if(num>length)/*输入数据大过数组长度*/
{
cout<<"wrong num"<<endl;
exit(-1);
}
for( i=0;i<length;i++)
{
if(tempmin.size()<num)/*容器初始化,假设前几个最小*/
{
tempmin.push_back(arr[i]);
}
else/*排序,当容器中最大值大于某个数组值,交换数据*/
{
sort(tempmin.begin(),tempmin.end());
if(*(--tempmin.end()) > arr[i])
{
tempmin.pop_back();
tempmin.push_back(arr[i]);
}
}
}
for(iter=tempmin.begin();iter!=tempmin.end();iter++)/**/
{
cout<<*iter<<endl;
}
}
int main()
{
vector<int> min;
int array[8]={1,7,3,4,5,0,2,8};
findnum(min,a,8);
return 1;
}