• 大小: 5KB
    文件类型: .cpp
    金币: 1
    下载: 0 次
    发布日期: 2021-01-06
  • 语言: C/C++
  • 标签: 合并优化  

资源简介

最优合并问题 给定k个有序序列s1 , s2,... , sk , 用2路合并算法将这k个序列合并成一个序列。 假设所采用的2路合并算法合并2个长度分别为m和n的序列需要m + n -1次比较。 试设计一个算法确定合并这个序列的最优合并顺序, 使所需的总比较次数最少。

资源截图

代码片段和文件信息

#include
#include
#include

#define MAXSIZE 1000
/*/**最优合并问题
给定k个有序序列s1  s2...  sk 
 用2路合并算法将这k个序列合并成一个序列。
假设所采用的2路合并算法合并2个长度分别为m和n的序列需要m + n -1次比较。
试设计一个算法确定合并这个序列的最优合并顺序,
使所需的总比较次数最少。*/ 


/*先进行排序在进行入队列: 
申请两个队列P和Q,先判断两个是不是非空队列,(如果两个都非空,就比较队列大小,小的出队列,最小两个进行合并)
排序之后把数字放在Q,合并之后把数字放在P 。
定义min1,min2为最小的两个数。在数组P,Q里面找到一个最小的数min1 
在数组P,Q里面找到另一个最小的数min2  。把两个小数想家summin入队列P,即已合并的数字放在队列P 
加起来 循环得到最后输出sum*/ 
/***********相关定义****************/
typedef struct
{
int data[MAXSIZE];
int length;
}SqList;

//打印当前L数组的顺序 
void print(SqList *L)
{
    for(int i=0;ilength;i++)
{
printf(“%4d “L->data[i]);
}
printf(“\n“);
}



typedef int datatype;

//链式队列 
typedef struct node
{
datatype data;
struct node *next;
} QNode*L

评论

共有 条评论

相关资源