您的位置:首页 > 理论基础 > 数据结构算法

Python 数据结构与算法——归并排序

2016-03-21 10:23 211 查看
排序——归并排序

上文的 Python 实现还是稍显啰嗦,未能充分发挥 Python 语言的优势,以及“Python——一种可执行的伪代码”的论断。本文介绍一种更为简洁的归并排序的实现:

def mergesort(l):
m = len(l)//2
lft, rgt = l[:m], l[m:]
if len(lft) > 1: lft = mergesort(lft)
if len(rgt) > 1: rgt = mergesort(rgt)
res = []
while lft and rgt:
res.append(lft.pop()) if lft[-1] > rgt[-1] else res.append(rgt.pop())
res.reverse()
return (lft or rgt) + res


简单的 if else 双分支都是可以转换为更为简洁的三目运算符的

while lft and rgt:
res.append(lft.pop()) if lft[-1] > rgt[-1] else res.append(rgt.pop())


即是对如下代码的转换:

while lft and rgt:
if lft[-1] > rgt[-1]:
res.append(lft.pop())
# 无参的 pop() ,从尾部弹出元素
else:
res.append(rgt.pop())


更多 Python 三目运算符的用法,请见 Python中的三目运算符
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: