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

我们先归纳性地假设前 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

你可能感兴趣的:(Python 数据结构与算法——插入排序(insertion sort))