【发布时间】:2018-04-14 21:10:40
【问题描述】:
我正在尝试完成 selectionSort,并让它返回一个由初始列表加上该列表的综合迭代组成的新列表。
def selectionSort(A):
log = []
#log.append(A)
for i in range(0, len(A) - 1):
minIndex = i
for j in range(i+1, len(A)):
if A[j] < A[minIndex]:
minIndex = j
if minIndex != i:
A[i], A[minIndex] = A[minIndex], A[i]
return log
num_list = [10, 9, 8, 7]
打印(selectionSort(num_list))
[7、8、9、10]
我正在寻找类似的东西:
[10, 9, 8, 7, 7, 9, 8, 10, 7, 8, 9, 10]
注意初始列表的三个迭代。
我让它与 BubbleSort 甚至 MergeSort 一起使用,但它们非常不同 - 这种交易指数的方法似乎不允许您在函数发生变化时对其进行存储。似乎列表在内存中发生了变化; log.append(A) 返回已解决的列表 :( 感谢您的帮助。
哦,是的,我在 Anaconda 中使用 python 3.6
【问题讨论】:
-
这种排序正在改变它正在处理的数组。我认为您的第一步是修改排序以在新数组上工作而不是改变它的参数
-
要获取日志的“当前状态”,您需要复制当前列表。你在外循环内的第一行应该是
log.append(A[:])。 -
附注,请不要使用
range(len(A)),如果需要索引,请使用for i, elem in enumerate(A)
标签: python list function sorting