算法解集--归并算法

#python解法
def zuhe(erwei_list):
	# 传入的是二维数组 类似 第一次[[1],[4],[6],[2]]
					# 返回 [[1,4],[2,6]]同时也是第二次传入的数据
						#当最后返回的[[1,2,4,6]]二维数组的长度为1时,迭代循环结束
	new_erwei_erwei = []

	#当传入的数据为奇数时,需要最后一位数字不加入计算
	if len(erwei_list)%2 !=0 and len(erwei_list)!=1:
		new_erwei_erwei.append(erwei_list[0])
		del erwei_list[0]

	# 当长度为1就返回
	if len(erwei_list) == 1:
		return erwei_list[0]
	for yiwei in range(0,len(erwei_list),2):
		# 设置步长为2
		new_erwei = []
		while True:
			# 此处当列表的长度为0时,再取会保存的,需要加条件
			if len(erwei_list[yiwei]) >=1 and len(erwei_list[yiwei+1]) >=1:
				if erwei_list[yiwei][0] < erwei_list[yiwei+1][0]:
					new_erwei.append(erwei_list[yiwei][0])
					del erwei_list[yiwei][0]
				else:
					new_erwei.append(erwei_list[yiwei+1][0])
					del erwei_list[yiwei+1][0]
			# 当某一方的长度为0时,直接将另一个列表的所有数据都加入列表中
			if len(erwei_list[yiwei])==0 and len(erwei_list[yiwei+1])!=0:
				for index,value in enumerate(erwei_list[yiwei+1]):
					new_erwei.append(value)
					del erwei_list[yiwei+1][index]
			if len(erwei_list[yiwei])!=0 and len(erwei_list[yiwei+1])==0:
				for index,value in enumerate(erwei_list[yiwei]):
					new_erwei.append(value)
					del erwei_list[yiwei][index]
			# 什么时候退出循环???
			# 当俩个列表中的长度都为0时,才退出
			if len(erwei_list[yiwei]) ==0 and len(erwei_list[yiwei+1])==0:
				break
		new_erwei_erwei.append(new_erwei)


	return zuhe(new_erwei_erwei)


jieguo = zuhe([[1],[6],[2]])
print(jieguo)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值