我思故我在系列—数据结构题(题目搜集整理者july,非常感谢!)

                  成功需要不懈的追求,不能有丝毫放松。

胜利如果不能成为取得更大成就的工具,那对我们来说就是毫无意 义的凯旋,反而有害无益

                                                   ——摘自奥格.曼狄诺《羊皮卷》


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;
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值