Алгоритм сортировки вставок, модифицирующий вывод
У меня есть работающий простой алгоритм сортировки вставок, написанный на 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))
1 ответ
Решение
Вы изменяете список в своей функции сортировки, простое решение с существующим решением - это копирование списка до его изменения.
import copy
def InsertionSort(A):
A = copy.deepcopy(A) # or A = A[:] might work as well in this case
...
return A
Как дополнительный совет, используемые вами соглашения об именах не являются питонскими. Имена функций должны быть заключены в змею, а не в Паскаль (я сохранил то же самое только для согласованности).