Python中的冒泡排序功能

时间:2018-09-25 10:17:05

标签: python

我有一个关于气泡排序功能一部分的问题,我不了解。任务是向代码的所有部分添加详细的注释,以解释其功能。我不确定的代码行是数字2和3(在末尾标有“#?”的代码)。谁能很好地解释这些路线在做什么?任何帮助,不胜感激。

def bubbleSort(alist):
    for passnum in range(len(alist)-1,0,-1): #?
        for i in range(passnum): #?
            if alist[i] > alist[i+1]:
                temp = alist[i]
                alist[i] = alist[i+1]
                alist[i+1] = temp

list = [54,26,93,17,77,31,44,55,20]
bubbleSort(list)
print(list)

1 个答案:

答案 0 :(得分:0)

for passnum in range(len(alist)-1,0,-1):

根据range function documentation

  • len(alist) - 1是列表的长度(8)减一(7)。它代表一些“起始”数字。
  • 0代表“停止”数字。
  • -1代表“步骤”编号。

它们在range(len(alist) - 1, 0, -1)中在一起表示“从7倒数到0,一次-负数一次”。

for i in range(passnum):

range()仅传递一个参数(一个数字)时,它从0计数到该数字。文档提供了以下示例:

list(range(10))  
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

因此,代码从7计数到0-每次执行一次计数时,它都会立即从0计数到该数字。