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 - iteration
或 len(myList) - 1 - 1
就在最大数字之前。
我正在尝试了解 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 - iteration
或 len(myList) - 1 - 1
就在最大数字之前。