Python 数据结构与算法——插入排序(insertion sort)
2016-03-21 15:02
591 查看
我们先归纳性地假设前 n−1n-1 个元素已经完成排序,现在要将第 nn 个元素插入到正确位置。
如下为递归版的插入排序的代码清单:
幸运的是,任何递归函数都可以被重写成相应的迭代操作(反之亦然)。
如下是我们更为熟知的迭代版的插入排序,它将后退式递归调用改成了从第一个元素开始的前进式迭代操作:
如下为递归版的插入排序的代码清单:
# n == len(seq)-1, seq 表示序列的最后一个元素 def ins_sort_rec(seq, n): if n == 0: return ins_sort_rec(seq, n-1) j = n while j > 0 and seq[j-1] > seq[j]: seq[j-1], seq[j] = seq[j], seq[j-1] j -= 1
幸运的是,任何递归函数都可以被重写成相应的迭代操作(反之亦然)。
如下是我们更为熟知的迭代版的插入排序,它将后退式递归调用改成了从第一个元素开始的前进式迭代操作:
def ins_sort(seq): for i in range(1, len(seq)): j = i while j > 0 and seq[j-1] > seq[j]: seq[j-1], seq[j] = seq[j], seq[j-1] j -= 1
相关文章推荐
- hdu 3874(树状数组+离线算法)
- A题常用数据结构
- 数据结构课设 任务调度的合理性 (拓扑排序)
- Operating Systems: Three Easy Pieces(操作系统:三个简单方面)4.5数据结构4.6总结
- 数据结构与算法笔记(一)单链表
- 数据结构5-队列
- 数据结构1 -- 链表的基本方法实现
- 数据结构4-堆栈
- linux2.6内核的DAC数据结构(传统9Bit模式、ACL模式)
- 数据结构与算法javascript描述之队列
- Python 数据结构与算法——从某个列表中找出两个彼此最接近但不相等的数
- javascript算法与数据结构之栈
- Python 数据结构与算法——侏儒排序
- 数据结构7—线索二叉树 (java)
- 数据结构笔记-----二叉排序树和哈希表
- 数据结构3-链表
- Python 数据结构与算法——归并排序
- Python 数据结构与算法——递归
- Python 数据结构与算法——tree(树)
- Python 数据结构与算法——列表(链表,linked list)