线性表-归并算法

简介: /*例如:有两个线性表LA=(1,5,7,15) LB=(3,6,8,9,13,15,17) 则: LC=(1,3,6,8,9,13,15,15,17) 上述问题要求可知,LC中的数据元素或是LA中的数据元素,或是LB中的数据元素,则首先设LC为空表,然后将LA或LBs中的元素逐个插入到LC当中。
/*例如:有两个线性表LA=(1,5,7,15)
                    LB=(3,6,8,9,13,15,17)
则:                LC=(1,3,6,8,9,13,15,15,17)
上述问题要求可知,LC中的数据元素或是LA中的数据元素,或是LB中的数据元素,则首先设LC为空表,然后将LA或LBs中的元素逐个插入到LC当中。
为使LC中元素按值非递减排列,可设两个指针i,j分别向LA和LB中的某个元素,若设i当所指的元素为a,j所指的元素为b则当前应插LC元素c为

    |->  b a>b
  c=|->  a a=b
    |->  a a<b
	显然,设指针i的j的初使值为1,在所指元素插入LC之后,指针在表LA或LB中将顺序后移。
*/
template<class T>
class merge<T>::
void MergetList(T La,T Lb, T Lc)
{
/*已知线性表La和Lb中的数据元素按值非递减排列*/
/*归并La和Lb得到新的线性表Lc,Lc的数据元素也按值非递减排列*/
	InitList(Lc);
	i=j=1;k=0;
	La_len=ListLength(La);
	Lb_len=ListLength(Lb);
	while((i<La_len)&&(j<=Lb_len))
	{
        GetElem(La,i,ai);
		GetElem(Lb,j,bj);
		if(ai<bj)
		{
			ListInsert(Lc,++k,ai);
			++i;
		}
		else if (ai==bj)
		{
			ListInsert(Lc,++k,ai);++i;++j;
		}
		else
		{
			ListInsert(Lc,++k,bj);++i;++j;
		}
	}
	while(i<=La_len)
	{
		/*如果La没有取完,则将La中的所剩元素插入到表Lc中*/
		GetElem(La,i++,ai);
		ListInsert(Lc,++k,ai);
	}
	while(j<=Lb_len)
	{
		/*如果La没有取完,则将La中的所剩元素插入到表Lc中*/
		GetElem(La,j++,bj);
		ListInsert(Lc,++k,bj);
	}
}/***********************************************************************-*/
/* MergeList                                                             */
/************************************************************************/


相关实践学习
部署高可用架构
本场景主要介绍如何使用云服务器ECS、负载均衡SLB、云数据库RDS和数据传输服务产品来部署多可用区高可用架构。
负载均衡入门与产品使用指南
负载均衡(Server Load Balancer)是对多台云服务器进行流量分发的负载均衡服务,可以通过流量分发扩展应用系统对外的服务能力,通过消除单点故障提升应用系统的可用性。 本课程主要介绍负载均衡的相关技术以及阿里云负载均衡产品的使用方法。
相关文章
|
8月前
|
算法
数据结构与算法2.1线性表、链表
数据结构与算法2.1线性表、链表
30 0
数据结构与算法2.1线性表、链表
|
7月前
|
算法
算法:分治思想处理归并递归问题
算法:分治思想处理归并递归问题
|
28天前
|
存储 人工智能 算法
数据结构期末复习(1)数据结构和算法 线性表
数据结构期末复习(1)数据结构和算法 线性表
16 0
|
2月前
|
存储 算法 搜索推荐
【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)
【算法】七大经典排序(插入,选择,冒泡,希尔,堆,快速,归并)(含可视化算法动图,清晰易懂,零基础入门)
|
6月前
|
搜索推荐 Java
排序算法-冒泡、选择、堆、插入、归并、快速、希尔
排序算法-冒泡、选择、堆、插入、归并、快速、希尔
14 0
|
4月前
|
存储 算法 搜索推荐
【算法系列篇】分治-归并
【算法系列篇】分治-归并
|
4月前
|
算法 搜索推荐
归并算法:分治而治的高效算法大揭秘(图文详解)
归并算法:分治而治的高效算法大揭秘(图文详解)
43 0
|
5月前
|
人工智能 算法 C语言
【408数据结构与算法】—线性表的定义和分析(二)
【408数据结构与算法】—线性表的定义和分析(二)
|
10月前
|
算法
【数据结构和算法】认识线性表中的链表,并实现单向链表(下)
【数据结构和算法】认识线性表中的链表,并实现单向链表(下)
|
10月前
|
存储 算法
【数据结构和算法】认识线性表中的链表,并实现单向链表(上)
【数据结构和算法】认识线性表中的链表,并实现单向链表(上)