Python合并两个有序列表

本文阅读 1 分钟
首页 Python笔记 正文

尾递归

  1. def _recursion_merge_sort2(l1, l2, tmp):
  2. if len(l1) == 0 or len(l2) == 0:
  3. tmp.extend(l1)
  4. tmp.extend(l2)
  5. return tmp
  6. else:
  7. if l1[0] < l2[0]:
  8. tmp.append(l1[0])
  9. del l1[0]
  10. else:
  11. tmp.append(l2[0])
  12. del l2[0]
  13. return _recursion_merge_sort2(l1, l2, tmp)
  14. def recursion_merge_sort2(l1, l2):
  15. return _recursion_merge_sort2(l1, l2, [])

循环算法
思路:
定义一个新的空列表
比较两个列表的首个元素
小的就插入到新列表里
把已经插入新列表的元素从旧列表删除
直到两个旧列表有一个为空
再把旧列表加到新列表后面

  1. def loop_merge_sort(l1, l2):
  2. tmp = []
  3. while len(l1) > 0 and len(l2) > 0:
  4. if l1[0] < l2[0]:
  5. tmp.append(l1[0])
  6. del l1[0]
  7. else:
  8. tmp.append(l2[0])
  9. del l2[0]
  10. tmp.extend(l1)
  11. tmp.extend(l2)
  12. return tmp

pop弹出

  1. a = [1,2,3,7]
  2. b = [3,4,5]
  3. def merge_sortedlist(a,b):
  4. c = []
  5. while a and b:
  6. if a[0] >= b[0]:
  7. c.append(b.pop(0))
  8. else:
  9. c.append(a.pop(0))
  10. while a:
  11. c.append(a.pop(0))
  12. while b:
  13. c.append(b.pop(0))
  14. return c
  15. print merge_sortedlist(a,b)
解压密码: detechn或detechn.com

免责声明

本站所有资源出自互联网收集整理,本站不参与制作,如果侵犯了您的合法权益,请联系本站我们会及时删除。

本站发布资源来源于互联网,可能存在水印或者引流等信息,请用户自行鉴别,做一个有主见和判断力的用户。

本站资源仅供研究、学习交流之用,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担。

python创建字典的方法
« 上一篇 04-10
Python找零问题
下一篇 » 04-10

发表评论