Я пишу программу Python 3 Bubble Sort для домашнего задания и не могу понять, как получить исходный список для повторной печати (он же не отсортированный список) после того, как список уже отсортирован.
Следующий уже опубликованный вопрос почти полностью отвечает на вопросы, но не дает решения для второго печатного оригинального списка:
Пузырьковая сортировка в Python 3
Аналогично, но не касается проблемы печати:
Bubble Sort Домашнее задание
Я надеюсь в репосте, что смогу получить полный ответ
import sys
def bubblesort(mylist):
changes = passes = 0
last = len(mylist)
swapped = True
# This original list (below) correctly prints as unsorted:
print("Original List: ", ','.join(map(str, mylist)) )
while swapped:
swapped = False
for j in range(1, last):
if mylist[j - 1] > mylist[j]:
mylist[j], mylist[j - 1] = mylist[j - 1], mylist[j] # Swap
changes += 1
swapped = True
last = j
# Only prints and increases number of passes if there was a swap
# Remove if statement for the correct number of passes
if(swapped):
passes += 1
print('Pass', passes, ':' , ','.join(map(str, mylist)))
# This original list (below) prints sorted:
print("\nOriginal List: ", ','.join(map(str, mylist)) )
print("Sorted List: ", ','.join(map(str, mylist)) )
print("Number of passes =",passes)
return mylist
print("Welcome to a Bubble Sort Algorithm in Python!")
mylist = " "
while True:
print("\nBubble sort in Python 3 Program")
mylist = input("Enter a the value or type Exit to exit: ")
if (mylist == "exit" or mylist == "Exit" or mylist == "EXIT"):
print("Goodbye")
sys.exit()
else:
mylist = [int(v) for v in mylist.split(',')]
bubblesort(mylist)
Программа должна выдавать следующие печатные результаты:
Оригинальный список: 4, 9, 74, 0, 9, 8, 28, 1
Пропуск 1: 4, 9, 0, 9, 8, 28, 1, 74
Пропуск 2: 4, 0, 9, 8, 9, 1, 28, 74
Пропуск 3: 0, 4, 8, 9, 1, 9, 28, 74
Пропуск 4: 0, 4, 8, 1, 9, 9, 28, 74
Пропуск 5: 0, 4, 1, 8, 9, 9, 28, 74
Пропуск 6: 0, 1, 4, 8, 9, 9, 28, 74
Исходный список: 4, 9, 74, 0, 9, 8, 28, 1
Сортированный список: 0, 1, 4, 8, 9, 9, 28, 74
Количество пропусков: 6
Фактические результаты печати:
Исходный список: 4, 9, 74, 0, 9, 8, 28, 1
Пропуск 1: 4, 9, 0, 9, 8, 28, 1, 74
Пропуск 2: 4, 0, 9, 8, 9, 1, 28, 74
Пропуск 3: 0, 4, 8, 9, 1, 9, 28, 74
Пропуск 4: 0, 4, 8, 1, 9, 9, 28, 74
Пропуск 5: 0, 4, 1, 8, 9, 9, 28, 74
Пропуск 6: 0, 1, 4, 8, 9, 9, 28, 74
Исходный список: 0, 1, 4, 8, 9, 9, 28, 74
Сортированный список: 0, 1, 4, 8, 9, 9, 28, 74
Оригинальный список выглядит отсортированным