【问题标题】:Tracing sorting algorithms跟踪排序算法
【发布时间】:2020-08-23 20:03:53
【问题描述】:

我正在尝试使用 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

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

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

【问题讨论】:

    标签: python-3.x selection-sort


    【解决方案1】:
    • 未知的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
    

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

    【讨论】:

    • 非常感谢,我仍在尝试找出迭代器的工作原理。
    • 刚刚从枚举中学到了很多,他们真的很有帮助。|有没有办法去掉最后一个数字?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-09-02
    • 2019-03-19
    • 2017-02-15
    • 2010-12-07
    • 1970-01-01
    相关资源
    最近更新 更多