2017-05-16 56 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) 

任何更改之前制作副本,应该表现出的那种进展。