1

我不明白选择排序算法的一部分。在代码的后半部分(使用temp变量的地方,为什么是L[i]L[minIndx]赋值?这些值本身不就不是吗?不能只给变量赋值吗?

def selSort(L):
    for i in range(len(L) - 1):
        minIndx = i
        minVal = L[i]
        j = i+1
        while j < len(L):
            if minVal > L[j]:
                minIndx = j
                minVal = L[j]
            j += 1
    # aren’t L[i] and L[minIndx] values? How can they be assigned to new values?
        if minIndx != i:
            temp = L[i]
            L[i] = L[minIndx]
            L[minIndx] = temp
4

2 回答 2

1

L是一个数组,它是一个包含许多索引元素的变量,每个索引元素就像另一个可以分配新值的变量。

所以L[i]L[minIndx]都是可以分配新值的数组元素,这就是这里正在做的事情来移动元素以对它们进行排序。

于 2012-11-04T12:45:02.100 回答
1

L[0]例如引用一个值或引用......如果你有一个数组L=[10,20,30]......L[0]引用这个值10,当你这样做时L[0],结果将是引用索引的值 - 10...当你这样做时L[0] = 100......这个索引值0将改为100. 你不能这样做10 = 100,因为10它是一个常量值,而不是一个变量,但是你可以这样做,L[0] = 100因为L[0]引用了数组中的一个地方。

于 2012-11-04T12:45:48.337 回答