В моем коде
реализована сортировка по пузырям, сортировка по вставке и быстрая сортировка, и первые два печатаются без каких-либо проблем при работе в качестве сети. Но последняя быстрая сортировка не отражает отсортированный список.
def Quick(item, reverse):
if reverse:
if len(item) <= 1:
return item
else:
first = item[0]
left = [i for i in item[1:] if i > first]
right = [i for i in item[1:] if i <= first]
return Quick(left, reverse) + [first] + Quick(right, reverse)
else:
if len(item) <= 1:
return item
else:
first = item[0]
left = [i for i in item[1:] if i <= first]
right = [i for i in item[1:] if i > first]
return Quick(left, reverse) + [first] + Quick(right, reverse)
def MySort(item, alg=None, reverse=False):
if alg == 'Bubble':
Bubble(item, reverse)
elif alg == 'Insertion':
Insertion(item, reverse)
elif alg == 'Quick':
item = Quick(item, reverse)
if __name__ == "__main__":
item1 = [1, 4, 3, 5, 6, 2, 8, 7, 9, 0]
MySort(item1, alg='Bubble', reverse=True)
print(item1)
item2 = [5, 61, 89, 910, 123, 895, 2, 4, 77, 13, 5567, 83, 44]
MySort(item2, alg='Insertion')
print(item2)
item3 = [5, 61, 89, 910, 123, 895, 2, 4, 77, 13, 5567, 83, 44]
MySort(item3, alg='Quick', reverse=False)
print(item3)
Конечно, если я использую 'return', чтобы получить выровненные значения в MySort()
как,
elif alg == 'Quick':
item = Quick(item, reverse)
return item
item3 = MySort(item3, alg='Quick', reverse=False)
это разрешить. Но я хочу, чтобы список item3
изменился с использованием
MySort(item3, alg='Quick', reverse= False)
вместо
item3 = MySort(item3, alg='Quick', reverse=False)
Буду признателен за вашу помощь.