在python中实现选择排序?

在python中实现选择排序?,python,sorting,selection-sort,Python,Sorting,Selection Sort,这似乎是一个简单的问题,但当我试图在Python中实现选择排序时,并没有得到排序列表。我的实现有什么问题吗 def selectionSort (B, annotate=True): for i in range(len(A)): for j in range(1,len(A)): if(A[i] > A [j]): A[i], A[j] = A[j], A[i] A = [5, 4, 3, 2, 1] A_sorted = s

这似乎是一个简单的问题,但当我试图在Python中实现选择排序时,并没有得到排序列表。我的实现有什么问题吗

def selectionSort (B, annotate=True):
    for i in range(len(A)):
    for j in range(1,len(A)):
        if(A[i] > A [j]):
            A[i], A[j] = A[j], A[i]



A = [5, 4, 3, 2, 1]
A_sorted = selectionSort (A)
print ("Sorted " + str(A) + " = " + str(A_sorted))

A = [10, 7, 8, 40, 2, 5]
A_sorted = selectionSort (A)
print ("Sorted " + str(A) + " = " + str(A_sorted))
以下是我得到的:

>>> (executing lines 1 to 74 of "selection_sort_103_v2.py")

Sorted [1, 5, 4, 3, 2] = None

Sorted [2, 40, 10, 8, 7, 5] = None

我可以试试这个。你对j的索引也是从1固定的,它需要根据i而变化

def selectionSort (A, annotate=True):
    for i in range(len(A)):
      for j in range(i+1,len(A)):
          if(A[i] > A [j]):
              A[i], A[j] = A[j], A[i]

    return A    
检查值:

A = [5, 4, 3, 2, 1]
print selectionSort(A)
>>[1, 2, 3, 4, 5]
此外,如果要同时打印旧数组和新数组,可能需要通过引用旧数组来保存它

A = [5, 4, 3, 2, 1]
Arr=A[:]
A_sorted=selectionSort(A)
print ("Sorted " + str(Arr) + " = " + str(A_sorted))

您不会从函数中返回任何内容。此外,您不使用参数B:所有工作都是在全局
A
上完成的。请修复您的缩进。它可以这样做吗?-@第二次世界大战:如果只是,但不是。