Python合并两个有序列表
尾递归
- def _recursion_merge_sort2(l1, l2, tmp):
- if len(l1) == 0 or len(l2) == 0:
- tmp.extend(l1)
- tmp.extend(l2)
- return tmp
- else:
- if l1[0] < l2[0]:
- tmp.append(l1[0])
- del l1[0]
- else:
- tmp.append(l2[0])
- del l2[0]
- return _recursion_merge_sort2(l1, l2, tmp)
-
- def recursion_merge_sort2(l1, l2):
- return _recursion_merge_sort2(l1, l2, [])
循环算法
思路:
定义一个新的空列表
比较两个列表的首个元素
小的就插入到新列表里
把已经插入新列表的元素从旧列表删除
直到两个旧列表有一个为空
再把旧列表加到新列表后面
- def loop_merge_sort(l1, l2):
- tmp = []
- while len(l1) > 0 and len(l2) > 0:
- if l1[0] < l2[0]:
- tmp.append(l1[0])
- del l1[0]
- else:
- tmp.append(l2[0])
- del l2[0]
- tmp.extend(l1)
- tmp.extend(l2)
- return tmp
pop弹出
- a = [1,2,3,7]
- b = [3,4,5]
-
- def merge_sortedlist(a,b):
- c = []
- while a and b:
- if a[0] >= b[0]:
- c.append(b.pop(0))
- else:
- c.append(a.pop(0))
- while a:
- c.append(a.pop(0))
- while b:
- c.append(b.pop(0))
- return c
- print merge_sortedlist(a,b)
解压密码: detechn或detechn.com
免责声明
本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。
本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。
本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。