【发布时间】:2022-01-05 11:34:48
【问题描述】:
基本上试图理解为什么为快速排序实现进行多变量分配有效,如下所示:
if a_list[i] > a_list[i+1]:
a_list[i], a_list[i+1] = a_list[i+1], a_list[i]
但不是逐行做,像这样:
if a_list[i] > a_list[i+1]:
a_list[i] = a_list[i+1]
a_list[i+1] = a_list[i]
如果有帮助,这里是完整的代码:
def bubble_sort(a_list):
last_ind = len(a_list) - 1
flag = True
while flag:
flag = False
for i in range(0, last_ind):
if a_list[i] > a_list[i+1]:
a_list[i], a_list[i+1] = a_list[i+1], a_list[i]
flag = True
return a_list
a_list = [5,8,2,1]
print(bubble_sort(a_list))
【问题讨论】:
-
这不是很明显吗?在单独执行
a_list[i] = a_list[i+1]之后,您将永久丢失之前的a_list[i]值。之后再做a_list[i+1] = a_list[i]是没有意义的,因为你正在分配刚刚来自a_list[i+1]的值。实际交换值需要使用临时变量或 Python 相当独特的A, B = B, A。
标签: python algorithm sorting quicksort