2012-11-04 42 views
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 
+1

將您使用的語言標記爲更好的結果 – Reflective

+0

作爲旁註,在Python中,您不需要任何臨時變量來交換兩個值。 'a,b = b,a'可以正常工作。 – georg

回答

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]引用了數組中的一個位置。

+0

謝謝反思。這是超級有用的。請通過標記您使用的語言讓我知道您的意思?我是否應該添加更多標籤以獲得更好的問題搜索結果?再次感謝你的反饋!我非常感謝你的時間和幫助。 – user1552159

+0

感謝您的反饋反饋。我非常感謝,並會在未來嘗試添加更多正確的標籤。我仍然對編程和這些論壇不熟悉,因此非常感謝您的幫助和解釋。 – user1552159

1

L是一個數組這是一個包含許多索引元素的變量,其中每個變量都像是另一個可以賦予新值的變量。

因此,L[i]L[minIndx]都是可以分配新值的數組元素,這就是在這裏完成移動元素進行排序。