高分求助!一个有N个整数组成的数组,写一个函数,找出数组中最大的K个数

dengjianqiang2011 2011-09-27 09:59:32
一个有N个整数组成的数组,写一个函数,找出数组中最大的K个数 例如:N=1000000 K=10 在线等!!!
用C++语言编写,方法是用数组存储K个数,排好序,然后N-K个数逐个与K个数中的数比较,去掉小数,把那个数存入数组再排序。求代码~~
...全文
431 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
mstlq 2011-09-28
  • 打赏
  • 举报
回复
建个大根堆……
KataDoc360 2011-09-28
  • 打赏
  • 举报
回复
堆排序,建立K-小顶堆,逐步便利N,插入和调整小顶堆
ljhhh0123 2011-09-27
  • 打赏
  • 举报
回复
#include <iostream>
#include <vector>
#include <cstdlib>
#include <ctime>

#define N 10
using namespace std;

int main(int argc, char* argv[])
{
vector<int> v;
srand(time(NULL));
int t,max;
for (int i=0; i<1000000; i++) {
v.push_back(rand());//生成随机数
//cout << v[i] << ' ';
}
//cout << endl;
for (int k=0; k<N; k++) {//冒N次泡就行了。
for (int j=0; j<1000000-1; j++) {
if (v[j]>v[j+1]) {
t=v[j];
v[j]=v[j+1];
v[j+1]=t;
}
}
}
for (int l=1000000-N; l<1000000; l++)
cout << v[l] << ' ';
cout << endl;
return 0;
}
快乐的小菜鸟 2011-09-27
  • 打赏
  • 举报
回复
先完整排序 冒泡的什么的随意 然后输出 排序独立写一个函数就好了 另外:作业要自己完成哦
dengjianqiang2011 2011-09-27
  • 打赏
  • 举报
回复
就是先用数组存储N个数中的任意K个数,把这K个数排好序,然后将剩余的N-K个数逐个与K个数中的数比较,如果比其中一个数大,那就去掉小数,把那个大数存入数组中再排好序。
最好用我的方法来做!谢谢拉~~
dipengbin 2011-09-27
  • 打赏
  • 举报
回复
#include <iostream>
#include <iterator>

using namespace std;


int Partition(int a[], int lhs, int rhs)
{
int Flag = a[rhs];
int lPos = lhs;
for(int rPos = lhs; rPos < rhs; ++rPos)
{
if(a[rPos] >= Flag)
{
if(rPos != lPos)
{
swap(a[rPos], a[lPos]);
}
++lPos;
}
}
swap(a[lPos], a[rhs]);

return lPos;
}

void QuickSort(int a[], int lhs, int rhs)
{
if(lhs < rhs)
{
int q = Partition(a, lhs, rhs);


QuickSort(a, lhs, q-1);

if(q < 9)
{
QuickSort(a, q+1, rhs);
}
}
}

int main()
{
int a[] = {8, 40, 5, 11, 3, 50 , 1, 11, 3, 23, 1, 4, 0, 6, 7, 50, -5, 1};
int N = sizeof(a)/sizeof(int);

QuickSort(a, 0, N-1);
copy(a, a+N, ostream_iterator<int>(cout, " "));
cout<<endl;
return 0;
}
y1509713911 2011-09-27
  • 打赏
  • 举报
回复
quote:"方法是用数组存储K个数,排好序,然后N-K个数逐个与K个数中的数比较,去掉小数,把那个数存入数组再排序。"
这是什么意思啊?
一定要用你上面描述的方法写吗?
dipengbin 2011-09-27
  • 打赏
  • 举报
回复
你用快速排序,只排前面10个就行了,你用下标判断超过10没有

64,646

社区成员

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

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