我正在尝试一种用于冒泡排序的算法,但有一部分我不理解
nums = [1,4,3,2,10,6,8,5]
for i in range (len(nums)-1,0,-1):
for j in range(i):
if nums[j] > nums[j+1]:
temp = nums[j]
nums[j] = nums[j+1]
nums[j+1] = temp
print(nums)
这部分代码中的数字(-1,0,-1)是什么意思(没有它,它会正确排序)v v v
for i in range (len(nums)-1,0,-1):
答案 0 :(得分:2)
Python中range
的语法是-
range(start, end, step)
在您的情况下,循环本质上是从最后一个元素(索引n-1)开始,一次朝着第一个元素(索引0)移动。
答案 1 :(得分:0)
Okey: 第一个是起点,第二个是告诉python在哪里停止,最后一个是步骤。
len(nums)-它使您(列表)的长度(在本例中为8) len(nums)-1-它是8-1,我们这样做是因为当通过列表时,python将从0开始并以7结尾(仍为8个元素,但最后一个具有索引7而不是8), 我们将从步骤-1在0处停止。因此迭代看起来像:
num[len(nums)-1] = num[7]
num[len(nums)-1-1] = num[6]
num[len(nums)-1-1-1] = num[5]
.....
num[len(nums)-1-1-1-1-1-1-1] = num[0]