Отслеживание алгоритмов сортировки - PullRequest
1 голос
/ 08 мая 2020

Я пытаюсь отследить изменения в алгоритме сортировки выбора с помощью python. Вот фрагмент моего кода и то, что я пробовал, проблема, с которой я сталкиваюсь, - это печать результатов в табличном формате

l = [2,5,1,7,9,5,3,0,-1]
iterat = 1
print('Iteration' + '\t\t\t' + 'Results')
for i in range(1, len(l)):
    val_to_sort = l[i]
    while l[i-1] > val_to_sort and i > 0:
        l[i-1], l[i] = l[i], l[i-1]
        i -= 1
        print(iterat, '\t\t\t', l[0:iterat + 1],'|',l[iterat:])
        iten += 1

из приведенного выше кода я получаю следующие результаты:

enter image description here

Но я пытаюсь получить такие результаты

results I am trying to obtain

1 Ответ

1 голос
/ 08 мая 2020
  • Unident print на один уровень влево, поэтому он находится внутри блока for вместо блока while.

  • Используйте join и map для печати списков в виде строки

  • Вы можете использовать enumerate вместо увеличения вручную iterat


def format_list(l):
    return ' '.join(map(str, l))

l = [2,5,1,7,9,5,3,0,-1]
print('Iteration' + '\t\t\t' + 'Results')

for iterat, i in enumerate(range(1, len(l)), 1):
    val_to_sort = l[i]
    while l[i-1] > val_to_sort and i > 0:
        l[i-1], l[i] = l[i], l[i-1]
        i -= 1
    print(iterat, '\t\t\t', format_list(l[0:iterat + 1]),'|', format_list(l[iterat:]))

Выводит

Iteration           Results
1            2 5 | 5 1 7 9 5 3 0 -1
2            1 2 5 | 5 7 9 5 3 0 -1
3            1 2 5 7 | 7 9 5 3 0 -1
4            1 2 5 7 9 | 9 5 3 0 -1
5            1 2 5 5 7 9 | 9 3 0 -1
6            1 2 3 5 5 7 9 | 9 0 -1
7            0 1 2 3 5 5 7 9 | 9 -1
8            -1 0 1 2 3 5 5 7 9 | 9

Я не могу вам помочь с текстом Cyrilli c;)

...