簡體   English   中英

Python插入排序混亂

[英]Python Insertion Sort Confusion

我有以下代碼:

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],為什么更改該行會有所不同?

temp獲取Array[c]的值,但隨后通過首次執行Array[i] = Array[d] (因為最初是i==c ),用另一個值覆蓋存儲位置Array[c] temp可以保留初始值,因此即使Array[c]本身已被重置,您也可以稍后使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM