Python 数据结构与算法——插入排序(insertion sort)

来源:互联网 发布:fullscreen软件 编辑:程序博客网 时间:2024/06/06 17:19

我们先归纳性地假设前 n1 个元素已经完成排序,现在要将第 n 个元素插入到正确位置。

如下为递归版的插入排序的代码清单:

# n == len(seq)-1, seq[n] 表示序列的最后一个元素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
0 0