python递归函数深度

时间:2017-07-02 10:08:03

标签: python sorting recursion

此程序使用插入排序递归排序列表... 有人可以让我理解' 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   

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