小程序帮帮忙,

xuruichen 2009-02-28 09:48:36
//一组N个数,确定第K个最大的数
//先把钱K个元素读入数组并对其排序,当读到一个新元素的的时候,如果该元素小于第K个元素则忽略之,
//否则就将该数放在正确的位置上,同时将容器中的一个元素从中挤出,当算法终止时第K个位置上的元素就作为答案。
#include<vector>
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int num,key;
vector<int> ivec_o,ivec_s;
vector<int>::iterator iter;
vector<int>::size_type index(0),i(0);
cout<<"input a series of numbers"<<endl;
while(cin>>num)
ivec_o.push_back(num);
cin.clear();
cout<<"input the nth number you want to find"<<endl;
cin>>key;
for(;index<key;++index)
ivec_s.push_back(ivec_o[index]);
sort(ivec_s.begin(),ivec_s.end());
for(index=key;index!=ivec_o.size();++index)
{
if(ivec_o[index] > *ivec_s.begin())
{
ivec_s.push_back(ivec_o[index]);
sort(ivec_s.begin(),ivec_s.end());
ivec_s.erase(ivec_s.begin());//应该是这一行出问题,但是不知道该怎么改。
}
}
for(iter=ivec_o.begin();iter!=ivec_o.end();++iter,++i)
{
cout<<*iter<<" ";
if(i%3==0)
cout<<endl;
}
cout<<"the number you want is: "<<ivec_s.begin()<<endl;
return 0;
}
//数据结构与算法分析(很郁闷,第一页就出了问题),第一页里面提到在N个数里找第K大的数,里面提到了两个算法,第一个冒泡,第二个就是这种,我写了个小程序,
//出了问题,望大家帮忙。
//编译可以通过,但是输入一些数之后,就会出现十六进制的内存数。应该是我注释的那一行,迭代器出了错误。
...全文
158 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
mark先
xuruichen 2009-02-28
  • 打赏
  • 举报
回复
是不是容器的迭代器的begin end不用编程人员操心,自己会变?
xuruichen 2009-02-28
  • 打赏
  • 举报
回复
啊,谢谢楼上,一失足成千古恨。

我怎么没看到?
sagegz 2009-02-28
  • 打赏
  • 举报
回复
最后一句,其它的有空再看.

cout <<"the number you want is: " <<*ivec_s.begin() <<endl;
qq675927952 2009-02-28
  • 打赏
  • 举报
回复
第K大的数,你最好开一个k+1的数组,这样操作比较方便,且把第一个初始化为最大的数,用插入排序的思想。。。就可以了
xuruichen 2009-02-28
  • 打赏
  • 举报
回复
哪位大侠帮忙看看,我自定一下。

65,210

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧