【发布时间】:2020-05-19 23:29:16
【问题描述】:
我已经编写了插入排序算法并确保它可以工作;但是,根据我打印排序列表的方式,输出会有所不同。例如,
x = some_unsorted_list
x = insertionSort(x)
print(x)
将打印排序列表就好了。另一方面,
x = some_unsorted_list
insertionSort(x)
print(x)
将打印一些部分排序未排序的列表。这是我的选择排序代码:
def insertionSort(L):
endList = len(L) - 1
for i in range(1,endList+1,1):
insertVal = L[i]
j = i - 1
while j >= 0 and L[j] > insertVal:
L[j+1] = L[j]
j -= 1
L[j+1] = insertVal
#print(L)
return L
请注意,注释掉的打印语句总是提供排序列表,这引起了我的困惑。
编辑(我遗漏了重要信息):以下是我如何调用插入排序。设 v1、v2 和 v3 为未排序列表。
for i in [v1,v2,v3]:
x = list(i)
insertionSort(x)
print(x)
回想一下,这就是出现错误的地方。但是,以下代码不会产生错误:
print(insertionSort(v1))
print(insertionSort(v2))
print(insertionSort(v3))
【问题讨论】:
-
Python 是一种有点不寻常的语言,因为值绑定到变量,而不是值分配到变量(复制输入和输出,如它是)。无论这里的问题是什么,它都可能在调用者中,而不是在排序函数中。提供minimal reproducible example 可以帮助其他人帮助您。
-
也许我以不同的方式执行您的测试,但我总是根据我的尝试对两个列表进行排序。也许正如 torek 建议的那样,如果您提供 minimal reproducible example 会有所帮助。
-
同样在我的不同尝试中,x 和 L 的id 始终相同,永远不会改变。所以,这与我的尝试中总是对 x 进行排序是一致的。
标签: python list sorting output