为什么在此插入排序的开头j总是= 4?

时间:2019-04-22 15:49:20

标签: python sorting insertion

我正在跟踪插入,冒泡和选择排序,以更好地了解/实践跟踪。

我正在使用Python Tutor进行帮助,无论列表大小如何,在此插入排序的开头,j总是[4]?在j = a [i]行。

什么是[i]?为什么我们将其设置为等于j?我的意思是显然是[4]大声笑,但我不知道从哪儿得到那4的。而且它似乎也不像Python Tutor所指示的那样是索引4,因为如果这是真的,那么它就等于'5'。当我在j = a [i]下添加一行'print(j)'时,第一个数字j和数字4一起出现,数字4是索引[1]。

我只是精疲力尽,变得完全愚蠢/缺少明显的东西吗?哈哈

谢谢!

def insertion(a):

    for i in range(1,len(a)):
       j = a[i]

           while i>0 and a[i-1]>j:
              print(a[i-j])
              a[i] = a[i-1]
              i = i-1
              a[i] = j

    return (a)

if __name__ == '__main__':
    lst = [2,4,3,1,5,6]
    print(insertion(lst))

1 个答案:

答案 0 :(得分:0)

  • 我们正在为j分配a [i],因为我们试图找到之间的位置 0..i-1以适合a [i]。
  • 我们假设a [0..i-1]已经排序。因此,如果我们退回到a [i-1]> j,就足够了。
  • 在开始循环时,索引i等于1。因此j 打印4。