我有一个用Python编写的简单插入排序算法。我正在尝试做的是获取输出并将其放入新列表而不更改原始输入列表。我一直坚持试图弄清楚如何做到这一点,也许我只是在思考它,但我想我会看到是否有人可以提供帮助。谢谢!
#!/usr/local/bin/python
import sys
import random
def RandomArray(n, max):
A = []
i = 1
while i <= n:
v = random.randint(1, max+1)
if v not in A:
A.append(v)
i = i + 1
return A
A = RandomArray(10,100)
print(A)
def InsertionSort(A):
element = 1
for element in range(0, (len(A))):
w = A[element]
j = element - 1
while (j >= 0) & (A[j] > w):
A[j+1] = A[j]
j = j - 1
A[j+1] = w
return A
print(InsertionSort(A))
答案 0 :(得分:1)
您正在改变排序函数中的列表,现有解决方案的一个简单解决方案是对列表进行深度检查,然后再进行变更。
import copy
def InsertionSort(A):
A = copy.deepcopy(A) # or A = A[:] might work as well in this case
...
return A
作为额外的建议,您使用的命名约定不是pythonic。函数名称应该是蛇形而不是Pascal(我保持一致只是为了保持一致)。