跟踪排序算法

Tracing sorting algorithms

我正在尝试使用 python 跟踪选择排序算法的变化,这是我的一段代码和我尝试过的,我面临的问题是在 [=24] 中打印结果=]-类似格式

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

从上面的代码中,我得到以下结果:

但我正在努力获得这样的结果

  • Unident print 向左一层,所以它在 for 块内而不是 while 块内。

  • 使用 joinmap 将列表打印为字符串

  • 您可以使用 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

虽然我无法帮助您处理西里尔文字 ;)