我正在嘗試爲python創建一個氣泡排序方法,僅僅爲了poops和grins。我不認爲我的交換方法正在工作。Python交換方法不起作用
def bubbleSort(list):
length = len(list)
for i in range(length - 1):
if list[i] > list[i+1]:
#swap
swap(list[i], list[i+1])
print(list)
print(list)
def swap(s1, s2):
# assert type(s1) == list and type(s2) == list
# tmp = s1[:]
# s1[:] = s2
# s2[:] = tmp
s2, s1 = s1, s2
該程序吐出我的列表,但沒有任何改變任何時間告訴我,我的交換方法無法正常工作。
當您執行s2時,s1 = s1,s2'只交換'swap'函數中的局部變量名稱。由於許多python類型是不可變的,所以不能編寫簡單的交換函數。 – pschill
這是Python不支持傳遞引用語義的一個很好的例子。如果是這樣,你可以寫一個交換功能與相同的身體,併產生你想要的結果! –