Python 数据结构与算法——归并排序
2016-03-21 10:23
211 查看
排序——归并排序
上文的 Python 实现还是稍显啰嗦,未能充分发挥 Python 语言的优势,以及“Python——一种可执行的伪代码”的论断。本文介绍一种更为简洁的归并排序的实现:
简单的 if else 双分支都是可以转换为更为简洁的三目运算符的,
即是对如下代码的转换:
更多 Python 三目运算符的用法,请见 Python中的三目运算符
上文的 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中的三目运算符
相关文章推荐
- Python 数据结构与算法——递归
- Python 数据结构与算法——tree(树)
- Python 数据结构与算法——列表(链表,linked list)
- 数据结构课设 旅游规划(dijkstra扩展)
- 数据结构课设 公路村村通 (最小生成树prim算法)
- 算法浅谈——数据结构
- C语言 数据结构与算法 一
- 数据结构3.1--栈的线性表示
- Python中列表、字典、元组数据结构的简单学习笔记
- 用C#学习数据结构之线性表
- 数据结构 线性表的顺序储存结构
- 二叉树的模板类实现
- 数据结构基础(六)排序
- 数据结构课设 修理牧场 (哈夫曼树基础)
- (转)java实现基本数据结构(堆,栈,链表)——推荐后面的链表扩展部分
- 二叉树的实现
- 单链表的操作
- 动态顺序表
- 数据结构课设 根据后序和中序遍历输出先序遍历
- 数据结构中排序算法