2012-02-25 38 views
0
def insertion_sort(A): 
    for j in range(1, len(A)): 
     key = A[j] 
    i = j - 1 
    while (i >= 0) and (A[i] > key): 
     A[i+1] = A[i] 
     i = i-1 
    A[i+1] = key 

    return A 


print insertion_sort([8, 1, 3, 4, 9, 5, 2]) 

現在這個打印:[8, 1, 3, 4, 9, 5, 2]python如何從函數返回列表?傳遞的列表是不可變的?

但我相信,我是變異的列表中,那麼爲什麼返回值是否相同?

+1

請在問題中修復代碼中的縮進。目前你的第一個for循環只是簡化爲'key = A [len(A)-1]'。我希望你的實際問題不只是縮進(如果是的話,修復)。 – ccoakley 2012-02-25 07:06:06

+2

如果'insertion_sort()'在原地修改了'A',那麼它應該返回'None'來表示。比較'list.sort()'和'sorted()'。 – jfs 2012-02-25 07:13:27

回答

6

您的代碼與當前縮進錯誤。應該是這樣的吧?

def insertion_sort(A): 
    for j in range(1, len(A)): 
     key = A[j] 
     i = j - 1 
     while (i >= 0) and (A[i] > key): 
      A[i+1] = A[i] 
      i = i-1 
     A[i+1] = key 

    return A 
+1

我使用vim來自動生成代碼:gg = G,它把它搞砸了!謝謝! – John 2012-02-25 07:09:17

0

如前所述,縮進不正確。

而且列表是可變的!

相關問題