0

我有这个代码:

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

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

[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],为什么更改该行会产生这种差异?

4

1 回答 1

4

temp获取 的值Array[c],但随后存储位置Array[c]被第一次执行Array[i] = Array[d](从i==c最初开始)覆盖为另一个值。temp是否可以保留初始值,以便您以后可以使用它,即使它Array[c]本身已被重置。

于 2013-06-17T15:42:14.507 回答