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中