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] = temp」ではなく「Array[i] = Array[c]」に変更すると、最終的な配列は次のようになります。

[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==ctempArray[c]

于 2013-06-17T15:42:14.507 に答える