K路归并
2016-01-05 14:39
183 查看
K路归并问题可以这样定义
如果存在k个已经排好序的数组,每个数组有数目不等的元素,要求出这些数组整体里最小的k个元素
代码如下,比较粗制滥造,希望提出批评
如果存在k个已经排好序的数组,每个数组有数目不等的元素,要求出这些数组整体里最小的k个元素
代码如下,比较粗制滥造,希望提出批评
#include<iostream> #include <queue> #include <map> #include <functional> using namespace std; //有k个已经排好序的数组 要求找出m个最小的元素 k为3 m为6 int minPos; #define MAXSIZE 10 //int a[3][3]={{5,8,12},{4,7,9},{2,3,10}}; typedef struct _Node { int value; int index; bool operator <(const struct _Node &t)const { return value>t.value; } }Node; vector <Node > a,b,c; int store[MAXSIZE]; void fun(int k,int m) { int minNum; int firstPoint=0,secondPoint=0,thirdPoint=0; priority_queue<Node> pq; Node nd; int i,j; nd.value=5; nd.index=0; a.push_back(nd); nd.value=8; nd.index=0; a.push_back(nd); nd.value=12; nd.index=0; a.push_back(nd); nd.value=4; nd.index=1; b.push_back(nd); nd.value=7; nd.index=1; b.push_back(nd); nd.value=9; nd.index=1; b.push_back(nd); nd.value=2; nd.index=2; c.push_back(nd); nd.value=3; nd.index=2; c.push_back(nd); nd.value=10; nd.index=2; c.push_back(nd); pq.push(a[firstPoint++]); pq.push(b[secondPoint++]); pq.push(c[thirdPoint++]); for(i=0;i<m;i++) { flag=false; //minNum为其最小元素的下标 也就是属于哪个数组 minNum=pq.top().index; switch (minNum) { case 0: if(firstPoint==a.size()-1) { cout<<pq.top().value<<endl; pq.pop(); break; } cout<<pq.top().value<<endl; pq.pop(); pq.push(a[firstPoint++]); break; case 1: if(secondPoint==b.size()-1) { cout<<pq.top().value<<endl; pq.pop(); break; } cout<<pq.top().value<<endl; pq.pop(); pq.push(b[secondPoint++]); break; case 2: if(thirdPoint==c.size()-1) { cout<<pq.top().value<<endl; pq.pop(); break; } cout<<pq.top().value<<endl; pq.pop(); pq.push(c[thirdPoint++]); break; default: break; } } } int main() { fun(3,6); return 0; }
相关文章推荐
- swustoj---254翻煎饼
- 反编译APK文件
- Extjs3 grid 嵌套
- 一、初识symfony
- Android 链接https出现 javax.net.ssl.SSLException: hostname in certificate didn't match:
- Instance Two: Insert Data to Mysql database
- SVN命令使用详解
- 活动组件(五):一个activity的例子
- vs2015 企业版 专业版 密钥
- ZABBIX短信告警脚本
- ListView的应用
- Android系统学习计划
- 关于setBackgroundResource 中偶尔会出现padding失效问题(无图)
- Struts2开发入门
- Linux中的时间和时间管理
- Unity 新UI事件系统(EventSystem) Demo
- 比较好的网站
- CMD命令大全
- gem install ** 出错,解决国内gem不能用的问题
- oracle11R2 log_archive_format