python 3 中的冒泡排序函数

bubblesort function in python 3

我正在尝试了解 bubbleset 的工作原理。我知道这里有多个线程,但它们都是该函数的不同版本,并且没有很好地向新手解释。我在 youtube 上找到了这个简洁的冒泡排序代码:

def bubblesort(mylist):
for i in range(0, len(mylist) - 1):
    for j in range(0, len(mylist) - 1 - i):
        if mylist[j] > mylist[j+1]:
            mylist[j], mylist[j+1] = mylist[j+1], mylist[j]
return mylist

有人可以向我解释第 3 行 len(mylist) - 1 - i 的用途吗?为什么我们要减去 i?我的列表有什么作用?

我是一名初级程序员,只是想更好地了解这些循环的工作原理。

这是因为每次迭代后,最后一个数字都会被排序。为了详细说明,让我们看看这个列表:

[0, 2, 5, 7, 3, 1]

第一次排序后,将排序最大的数。第二次排序后,第二大的数已经排好。或者基本上,索引 len(myList ) - 1 - iteration 处的数字已经排序并且位于正确的位置。第一次排序后,最大的数就位了。最大数字的索引现在位于 len(myList) - 1。然后第二大数字将被正确放置,这个 iteration 从 0 到 1 所以第二大数字的索引现在是 len(myList) - 1 - iterationlen(myList) - 1 - 1 就在最大数字之前。