猿问

Python插入排序混乱

我有以下代码:


Array = [9, 8, 7, 6, 5, 4, 3, 2, 1, 0]


for c in range(1, len(Array)):

     if(Array[c]==-1):

         continue

     temp = Array[c]

     i = c

     d = c-1

     while(d>=0):

        if(Array[d]==-1):

            d-=1

            continue

        if(temp>=Array[d]):

            break

        Array[i] = Array[d]

        i = d

        d-=1

     Array[i] = temp

当我按编写的方式运行代码时,最终的Array是:


[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

但是,当我将最后一行更改为“ Array [i] = Array [c]”而不是“ Array [i] = temp”时,最终的Array为:


[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]

这对我来说没有意义。如果“ temp”是Array [c],为什么更改该行会有所不同?


HUX布斯
浏览 129回答 1
1回答

开满天机

temp获取的值Array[c],但是Array[c]第一次执行Array[i] = Array[d](自i==c最初以来)后,存储位置将被另一个值覆盖。temp是否保留了初始值,因此即使Array[c]其已被重置,也可以在以后使用。
随时随地看视频慕课网APP

相关分类

Python
我要回答