此程序使用插入排序递归排序列表... 有人可以让我理解' isort'递归地工作以及如何插入'甚至在' isort'之后运行递归,isort递归暂停,直到它完全运行一次?
def insertion(seq):
isort(seq,len(seq))
def isort(seq,k):
if k>1:
isort(seq,k-1)
insert(seq,k-1)
def insert(seq,k):
pos=k
while pos>0 and seq[pos]<seq[pos-1]:
(seq[pos],seq[pos-1])=(seq[pos-1],seq[pos])
pos=pos-1
答案 0 :(得分:0)
查看isort(seq, k)
该函数确保最后k个元素已排序
def isort(seq,k):
if k>1:
isort(seq,k-1)
// seq[k-1:] is sorted
insert(seq,k-1)
// the k'th item is now inserted in the correct place,
// so seq[k:] is sorted
对于k=len(seq)
,seq[k:]
被轻微排序(它是一个空列表)
并且递归在每一步中将k
减少1,从尾到头排序seq