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

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: