无法实现部分选择排序

Trouble implementing part of selection sort

我已经在 python 中实现了选择排序,但是无法理解内部 for 循环的这一小部分。

for 循环 j,我的范围是从外部索引 i 到最大长度-1,这对我来说很有意义,但结果会数到数组最后一个数,也想不出原因。

但是,如果我将范围从 i 更改为最大长度,它就会起作用。 (据我所知,这应该超过数组,因为 alist[len(alist)] 将计算 1 位数字通过最大数字)。

#Go over the loop, find the smallest num
def swap(arr, num_1, num_2):
    temp = arr[num_1]
    arr[num_1] = arr[num_2]
    arr[num_2] = temp

def selectionSort(alist):
    for i in range(0, len(alist)-1):
        min = i
        # for j in range(i+1, len(alist)):
        # Why len(alist)-1 doesn't work?
        for j in range(i, len(alist)-1):
            if alist[j] < alist[min]:
                min = j
        if min != i :
            swap(alist,i,min)
    return alist


# Test
print "-------------Test--- ----------"
A = [2,1,9,3,4,100,99,30]
print selectionSort(A)

再次阅读 Python 中的范围;你没有一个明确的概念 他们。例如,range(0, 3) 大致等同于 [0, 1, 2]。 它在第二个值附近停止。切片也是如此。