2017-05-16 54 views
0

我試着做一些未分類的列表上的動畫情節可視化冒泡的變化值,說np.random.permutation(10)蟒蛇追加的問題,功能保持列表

所以很自然我會每它的冒泡排序函數內改變時間追加列表直到完全分類。下面的代碼

def bubblesort(A): 
    instant = [] 

    for i in range(len(A)-1): 
    lindex=0 
    while lindex+1<len(A): 
     if A[lindex]> A[lindex+1]: 
     swap(A,lindex,lindex+1) 
     lindex+=1 
     else: 
     lindex+=1 

     instant.append(A) 
    return instant 

的問題是,雖然,instant只返回

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

這顯然是不對的。出了什麼問題?謝謝!

回答

1

A正在就地操作,而bubblesort正在返回此數組的引用列表。請注意,如果您現在檢查A,它也會被排序。

更改

if A[lindex]> A[lindex+1]: 
     swap(A,lindex,lindex+1) 

if A[lindex]> A[lindex+1]: 
     A = A.copy() 
     swap(A,lindex,lindex+1) 

任何更改之前製作副本,應該表現出的那種進展。