算法导论:分治法,python实现合并排序MERGE-SORT

1. 简单合并排序法实现

思想:两堆已排好的牌,牌面朝下,首先掀开最上面的两张,比较大小取出较小的牌,然后再掀开取出较小牌的那一堆最上面的牌和另一堆已面朝上的牌比较大小,取出较小值,依次类推......

"""合并两个已经排好的子列表"""

ListB = [2, 4, 5, 7, 1, 2, 3, 6]

ListB_L = ListB[0: int((len(ListB))/2)]
ListB_R = ListB[int((len(ListB))/2): len(ListB)]  # 把列表B分为左右两块,可以发现L和R已经排好序了

ListB_L.append(99999)
ListB_R.append(99999)  # 在每个子列表的底部放置哨兵牌

i = 0
j = 0
for n in range(0, len(ListB)):
    if ListB_L[i] <= ListB_R[j]:
        ListB[n] = ListB_L[i]
        i = i + 1                   # 依次取两个子列表的较小值填入列表B中
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值