Python 冒泡排序实现不工作

Python 冒泡排序实现不工作,python,algorithm,Python,Algorithm,此冒泡排序算法每次运行时都会打印一个空列表,但确实看不出有什么问题: def bubble_sort(seq): changed = True while changed: changed = False for i in range(len(seq) - 1): if seq[i] > seq[i+1]: seq[i], seq[i+1] = seq[i+1], seq[i]

此冒泡排序算法每次运行时都会打印一个空列表,但确实看不出有什么问题:

def bubble_sort(seq):
    changed = True

    while changed:
        changed = False
        for i in range(len(seq) - 1):
            if seq[i] > seq[i+1]:
                seq[i], seq[i+1] = seq[i+1], seq[i]
                changed = True
    print(seq)          
    return None         


if __name__ == '__main__':
    bubble_sort(list(range(0,10,-1)))
list(范围(0,10,-1))
给出了一个空列表[],因为您的范围为0到10,步骤为-1

尝试
列表(范围(10,0,-1))

导致

[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
更新:如果你想递归地做,但没有作弊:-)

def bubble_排序(输入列表):
对于idx,枚举中的num(输入列表):
尝试:
如果输入_列表[idx+1]
Thaks!它工作得很好!通常,您不希望这样的函数产生自己的输出。将其排序到位或返回排序列表,保持输入不变。无论哪种方式,都让调用方决定是否输出排序列表。
[10, 9, 8, 7, 6, 5, 4, 3, 2, 1]
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
def bubble_sort(input_list):
    for idx, num in enumerate(input_list):
        try:
            if input_list[idx + 1] < num:
                input_list[idx] = input_list[idx + 1]
                input_list[idx + 1] = num
                bubble_sort(input_list)
        except IndexError:
            pass
    return input_list


if __name__ == '__main__':
    my_list = [100, 39, 2, 12, 42, 12, 90]
    bubble_sort(my_list)
    print(my_list)