问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

n个已排序的数组进行合并,合并后的数组也是有序的,有没有什么比较好的算法,最好有个例子

发布网友 发布时间:2022-05-16 05:13

我来回答

4个回答

热心网友 时间:2023-10-12 03:45

假设n个有序(递增排序)数组A1...An,第i个数组元素下标从0到leni-1
那么执行代码如下进行合并:
【1】求VMAX = max{A1[len1-1], A2[len2-1], ... An[lenn-1]}; //即求所有数组最大值
A1[len1] = A2[len2] = ... = An[lenn] = VMAX; //让每个数组末尾都填入一个最大值,做哨兵使用
【2】int index[MAX_SIZE] = {0}; //初始化每个数组的指标
while (not_end())
step();
其中not_end函数判断是否A1<len1 && A2<len2 && ... && An<lenn //用循环,容易实现
作为while的结束条件
step()进行合并的每一步操作,首先依据index指示的每个数组当前位置,选取最小元素及其对应指标,将最小元素插入新数组末尾,将对应指标后移。

如果两个数组合并会的话,理解这个很简单。 复杂度是o(len1+len2+...+lenn)
当然先合并两个,再合并两个,不断下去,也可以,不过复杂度较上面那个高

热心网友 时间:2023-10-12 03:45

两个已排序数组p和q,假设将他俩合成一个有序数组,首先可以明确的是,不要幻想真的把p和q合并成一个新的有序数组

热心网友 时间:2023-10-12 03:46

归并排序:

#include <stdio.h>
#include <stdlib.h>
typedef int datatype;
datatype *dst(datatype *a,const size_t na,datatype *b, const size_t nb,datatype *c)
{
size_t k=0,i=0,j=0;
datatype *cc=(datatype*)malloc(sizeof(datatype)*(na+nb));
while (i<na&&j<nb)
{
if (a[i]<b[j]) cc[k++]=a[i++];
else cc[k++]=b[j++];
}
while (i<na)
cc[k++]=a[i++];
while (j<nb)
cc[k++]=b[j++];
for (i=0;i<na+nb;i++)
c[i]=cc[i];
free(cc);
return c;
}
void prt(datatype *ar,size_t n)
{
size_t i;
for (i=0;i<n;i++)
printf("%d ",ar[i]);
putchar('\n');
}
int main(int argc,char *argv[])
{
datatype a[]={1,3,5,7,9},
b[]={0,2,4,6,8,10},
c[]={11,13,15,17,19},
d[]={12,14,16,18,20},
e[21];
prt(dst(e,0,a,5,e),5);
prt(dst(e,5,b,6,e),11);
prt(dst(e,11,c,5,e),16);
prt(dst(e,16,d,5,e),21);
return 0;
}

热心网友 时间:2023-10-12 03:46

这不就是多路归并排序么?
看看归并排序
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
小篇幅造句 易车如何发布二手车 转让卖车信息流程 《易车》群聊消息关闭方法 易车消息夜间勿扰方法步骤 易车如何开启消息夜间勿扰 易车 开启@消息推送 ...当入射角是 时,反射角是 。我们能从各个方向看到本身不发光的物体... 发泄的近义词和反义词是什么_发泄是什么意思? 我的世界手游 我的世界手机版怎么做末地传送门? 我的世界手游 末地传送门怎么做? 安全评价师的报考科目有什么 哭求数据结构综合排序完整算法 丽江古城四方街游玩攻略是什么? 当今扑救甲(液化烃除外)、乙、丙类液体火灾普遍使用的灭火系统是?如题 谢谢了 鲜车前草熬水的使用量是多少? 扑灭石油产品,油漆和电器火灾应选用什么灭火器。 车前草小孩怎么用量一天吃多少次 加油站油品着火 消防车应该携带什么灭火剂 初中日记300字2篇 电子商务的发展将会给我们带来什么影响? 美菱饮水机不上水是什么原因? 随着电商的发展会对制造业有什么影响? 美的饮水机不出水是什么原因 请叙述电子商务是什么?它的发展前景会如何? ewtp对跨境电子商务发展会起什么作用 石油化工和有毒气体应采用什么灭火剂 未来的电子商务发展趋势会是什么样子呢?电子商务会有哪些新模式? 长沙有电子商务协会吗? 石油化工火灾要什么装备 石油化工厂常用的消防器材及其使用范围? 石油化工厂常用的消防器材及其使用范围是什么? vb中有序数组合并 利用选择排序算法或冒泡排序算法 2、高级排序算法 用语言实现三种高级排序算法——合并排序、快速排序和堆排序,针对数据规模分别为 10^2, 风暴之眼的战场 插入排序、合并排序和快速排序算法的C语言实现与性能比较 (C语言数据结构) 设计两个有序顺序表的合并排序算法。 风暴之眼战场的详细规则谁知道?? 风暴之眼战场的常识,请教一下. 关于新战场风暴之眼的问题 魔兽世界风暴之眼战场夺旗、杀敌、抢塔,哪个重要? 魔兽世界战场风暴之眼战术高手指教... 低能耗电暖器是什么?耗电怎样?价格如何? 魔兽世界 风暴之眼评级战场 资源机制 蓄能式电采暖器价格及工作原理 魔兽世界风暴之眼战场交旗子有什么用?加点数么?加多少?顺便问一下,AFK是什么意思? CTM风暴之眼战场如何打 储热电暖器 - 信息提示 魔兽世界风暴之眼战场有一次性任务吗? 华安储热式电暖器+最小的多少瓦 风暴之眼