4-5 python归并排序实现

思想:

第一步:将整个列表拆分成左右两部分:
第二步:继续将左区间拆分,直到剩一个元素。
第三步:将左右区间元素比较大小排序后进行合并。

# 
def merge_sort(alist):
	n = len(alist)
	if n <= 1:
		return alist
	mid = n // 2
	
	# 拆分列表
	left_li = merge_sort(alist[:mid])
	right_li = merge_sort(alist[mid:])
	
	# 排序合并
	left_index,right_index = 0,0
	result = []
	while left_index < len(left_li) and right_index < len(right_li):
		if left_li[left_index] < right_li[right_index]:
			result.append(left_li[left_index])
			left_index += 1
		else:
			result.append(right_li[right_index])
			right_index += 1
			
	result += left_li[left_index:]
	result += right_li[right_index:]
	return result
if __name__ == '__main__':
	li = [0,4,1,3,6,34,2,2,23,54,6,8,87,6,7,98,67,56,87,34,23,121,54,2312]
	merge_sort(li)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值