关于python 中的冒泡排序和range函数的关系

标题 深入解析冒泡排序算法的实现原因

冒泡算法是编程语言中的一种经典算法,相对来说也是比较简单,但这种算法可以提高你对编程语言的结构认识,那么这种算法到底有什么秘密吗?具体是如何实现?为什么要这样算呢?下面,我来一一讲解。
首先,冒泡算法指的是对一个给定无序的整数型序列,在Python中通常叫列表,在java中通常叫list,数组,使这个序列,也就是列表按照一定的顺序排列,通常递增或者递减,从而形成一个新的有序的列表,有序指的是有规律。那么规则就是递增(递减)排列。
下面上代码。
lst=[10,8,6,66,22,4,8,93,2,0,55,76]#1
length=len(lst)#2
print(length)#3
count_swap=0#4
count=0#5
for i in range(length):#6
print(i)#7
count+=1#8
for j in range(0,length-1-i):#,9
if lst[j] > lst[j + 1]:#10
count_swap+=1#11
lst[j],lst[j+1]=lst[j+1],lst[j]#12
print(‘交换数字次数=’,count_swap)#13
print(type(lst),lst)#14
print(length)#15
#1 给定一个名字为lst的列表
#2设置一个变量名为length接受len(),也就是列表的长度,等于是告诉我们列表内多少个元素,len()函数是内置函数返回对象的元素个数
#3print测试
#4 定义一个初始化变量,这是一个从零开始自增的变量
#5同上步
#6这是一个循环,冒泡的关键就在这个range函数,此函数有三个参数,起始位置,结束位置,步长,秘密在于起始位置以1为值递增,通常起始位置这个参数可省略,表示从零开始,每一次循环加1,直到结束位置的前一位,也就是说不包括结束位置,步长也通常省略,默认为1的步长。而我们的列表默认下标也是从零开始,直到末尾,因此,遍历列表可以通过len()取得列表下标,套入range函数。
#7print测试
#8每次循环count增加一,以作计数,循环次数。
#9这是一个内循环,由于,下标是从零开始,不包括结束,因此需要控制循环次数不超出下标界限,界限就是len(),而在下面一步也就是第十步两两比较后,此次循环结束一次后,最左端的数字已经动态交换到了最右端,因此需要length-1-i,这是为了提高效率,不需要每次的全列表遍历,因此,-i可以不写但会降低算法效率,第一个参数通常默认为零也可以不写
#10 通过第九步的循环得到的下标与下标的下一位也就是j+1比较,如果本位大于下一位,那么执行第十一步
#11 交换两个元素的位置,在Python中,我们通常认为这样写是正确的。举例说明 :
在Python中
a=1,b=2
a,b=b,a
print(a,b)
也就是说,在一般的编程语言中,交换两个变量的值,需要通过中间变量来实现,python中省略了这一步.
#12内循环次数,原理同7
#13 print测试
#14 print 结果类型以及新生成的列表

发布了13 篇原创文章 · 获赞 0 · 访问量 309

猜你喜欢

转载自blog.csdn.net/alwaysbefine/article/details/104693432