【发布时间】:2017-07-03 07:03:24
【问题描述】:
我正在尝试为 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 类型是不可变的,你不能编写一个简单的交换函数。 -
这是 Python 不支持传递引用语义的一个很好的例子。如果是这样,您可以使用相同的主体编写一个交换函数并产生您想要的结果!