选择排序'切换'代码

时间:2012-11-04 12:33:48

标签: python sorting

我不理解选择排序算法的一部分。在代码的后半部分(使用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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

L[0]例如引用一个值或引用...如果您有一个数组L=[10,20,30] ... L[0]引用值10,那么L[0]引用10 1}}结果将是引用索引的值 - L[0] = 100 ...当您执行0时...索引100的此值将更改为{{1} }。您无法10 = 100,因为10是常量值,而不是变量,但您可以执行L[0] = 100因为L[0]引用数组中的某个位置。