数据结构——线性表的合并和有序表的合并

本文详细介绍了线性表的合并与有序表的合并算法,包括使用顺序表和链表两种实现方式。线性表的合并通过遍历元素插入实现,时间复杂度为O(n*m),而有序表的合并通过比较元素大小合并,时间复杂度为O(n+m)。顺序表实现时直接遍历并合并,链表实现则通过三指针操作高效合并。
摘要由CSDN通过智能技术生成

线性表的合并

  • 问题描述:
    假设利用两个线性表La和Lb分别表示两个集合A和B,现要求一个新的集合A = A∪B
    La = (7, 5, 3, 11)     Lb = (2, 6, 3) ➡   La = (7, 5, 3, 11, 2, 6)
     
     
  • 算法步骤:

依次取出Lb中的每个元素,执行以下操作:

  1. 在La中查找该元素
  2. 如果找不到,则将其插入La的最后
void union(List &La, List Lb){
	La_len = ListLength(La);		//求La的长度
	La_len = ListLength(Lb);		//求Lb的长度
	for(i = 1; i <= Lb_len; i++){		//依次取出Lb中的元素
		GetElem(Lb, i, e);
		if(!LocateElem(La, e))			//如果元素e不存在La中
			ListInsert(&La, La_len++, e);	//则将其插入La的最后
	}
}
//算法的时间复杂度是:O(ListLength(La) * ListLength(Lb))

 
 

有序表的合并

用顺序表实现有序表的合并

  • 已知线性表La和Lb中的数据元素按值非递减有序排列,现要求将La和Lb归并为一个新的线性表Lc,且Lc中的数据元素仍按值非递减有序排列:
    La =(1, 7, 8)    Lb = (
  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值