python中的三种排序方法,使用冒泡对列表排序,使用自带sort方法进行排序 您所在的位置:网站首页 python中冒泡排序法排序的过程 python中的三种排序方法,使用冒泡对列表排序,使用自带sort方法进行排序

python中的三种排序方法,使用冒泡对列表排序,使用自带sort方法进行排序

2024-07-06 08:11| 来源: 网络整理| 查看: 265

本文章属于转载,但是再最后的冒泡教程中,我写了自己的理解以及自己的一些建议,有什么不懂得,可以直接留言问我!

本文章转载于csdn,原作者:f_chenchen;点击链接即可跳转! 点击

对列表的数据进行排序: 方法一: 直接用列表自带函数排序,.sort()方法默认升序,将参数reverse改为True,改为降序:

list = [7, 4, 3, 67, 34, 1, 8] list.sort() print(list) [1, 3, 4, 7, 8, 34, 67] list.sort(reverse = True) print(list) [67, 34, 8, 7, 4, 3, 1]

方法二:

for循环,从list中取最小值,插入到一个空列表(用append默认插入列表最后边),然后把原列表中的最小值删除,再次取最小值,循环len(list)次。如果要求倒序,把min改为max即可:

list = [7, 4, 3, 67, 34, 1, 8] a= [] for i in range(len(list)): a.append(min(list)) list.remove(min(list)) print(a) [1, 3, 4, 7, 8, 34, 67]

方法三:

冒泡排序:从小到大,比较相邻的元素,如果前一个比后一个大,交换之。 a是外层,轮,b是内层,次 len(list) = 7 第一轮: a = 0 b in range(6),循环执行6次 第一次 4,7比较,比较后[4,7, 3, 67, 34, 1, 8] 第二次 7,3比较,比较后[4,3, 7, 67, 34, 1, 8] …… 第六次 8,67比较,比较后[4, 3, 7, 34, 1, 8, 67]

第二轮: a = 1 b in range(5),循环执行5次(因为在第一轮已经将最大值67判断出来,不用再和67做比较) 第一次 4,3比较,比较后[3, 4, 7, 34, 1, 8, 67] 第二次 4,7比较,比较后[3, 4, 7, 34, 1, 8, 67] 第五次34,67比较,比较后[3, 4, 7, 1, 8, 34, 67]

第三轮: a = 2 b in range(4),循环执行4次,34,67的顺序已经比较出来 第一次3,4比较,比较后[3, 4, 7, 1, 8, 34, 67] 第二次4,7比较,比较后[3, 4, 7, 1, 8, 34, 67] 第三次7,1比较,比较后[3, 4, 1, 7, 8, 34, 67] 第四次7,8比较,比较后[3, 4, 1, 7, 8, 34, 67]

第四轮: a = 3 b in range(3),循环执行3次,8,34,67的顺序已经比较出来 第一次3,4比较,比较后[3, 4, 1, 7, 8, 34, 67] 第二次4,1比较,比较后[3, 1, 4, 7, 8, 34, 67] 第三次4,7比较,比较后[3, 1, 4, 7, 8, 34, 67]

第五轮: a = 4 b in range(2),循环执行两轮7,8,34,67的顺序已经比较出来 第一次3,1比较,比较后[1, 3, 4, 7, 8, 34, 67] 第二次3,4比较,比较后[1, 3, 4, 7, 8, 34, 67]

第六轮 a = 5 b in range(1),循环执行一轮,4, 7, 8, 34, 67的顺序已经比较出来 第一次,1,3比较,比较后[1, 3, 4, 7, 8, 34, 67]

此时,轮和次都循环完毕,排序完成 从大到小的顺序,把 if list[b] > list[b+1]改为if list[b] < list[b+1]即可

list = [7, 4, 3, 67, 34, 1, 8] for a in range(len(list)): for b in range(len(list)-a-1): if list[b] > list[b+1]: list[b+1],list[b]=list[b],list[b+1] print(list)

自己得理解:

#使用冒泡方法进行排序! #资料、学生的成长档案! test1 = [2,56,1,767,33,88,22] for i in range(len(test1)):#这个是一共循环7次,从零开始,一直到7 #第一次运行,a是零。次数是6 #第二次运行,a是1;次数是6 #但是由于第一次的数字换到了第二个数,第二个数往再根据后面坐标a+1,进行比对 #第二个for循环体结束,一个数的位置: #这个是无法用言语表达,建议各位兄弟不要急,有时间就看看,就算暂时没懂,也没事 #多看看视频教学,看不同老师的讲解 #我看了两三天才会,过来人经验,不要急!! #第二个循环体结束后,会再次执行第一个for,i变成了1 #然后再次执行第二个for,此时第二个就变成了for i in range(5)),因为最大数经过第一轮的运行,已经确定了最大数 for a in range(len(test1)-i-1):#这个第一次执行就循环6次,因为要进行6次比对,然后比过之后就不用再比,就减去每次执行的i if test1[a]>test1[a+1]: test1[a],test1[a+1]=test1[a+1],test1[a] print(test1)


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有