posts - 93,  comments - 6,  views - 57672

冒泡排序法:是在每一轮排序结束之后都有一个体积最大的气泡冒出来,这也正是冒泡排序法名字的由来。

(1)从集合第一个元素开始,每两个相邻的元素进行大小比较,令数值较大的元素向后移动,即交换两个元素的位置,不断对比直至数组的末尾。经过第一趟对比,找到整个集合中最大的元素,并将其移动到集合最后一个位置。
(2)继续进行第二趟排序,仍然从集合的第一个元素出发,相邻两元素对比,让较大者向后移动,不断对比至集合中倒数第二个元素为止。此时可以找到整个集合中第二大的元素,并使其处于集合的倒数第二位。
(3)每趟结束之后都会有一个元素找到自己最终在集合中的位置,不断从第一个元素开始进行 n-1 趟上述过程,即可完成所有元素的排序,实现将集合从小到大排序。

把集合中每一个数想象成在水中纵向放置、体积大小不一的气泡,数值越大气泡的体积越大。

实现如下:

1、nums 变量:表示待排序数组名,为list类型
2、flag 变量:每趟排序开始时为0,一旦发生元素交换变为1。如果一趟对比结束后之后 flag 值为0,说明没有发生元素交换,已经排序完毕,可以终止排序,跳出循环。

复制代码
 1 def Bubblesort(nums):
 2     for i in range(len(nums)-1):
 3         flag=0
 4         for j in range(len(nums)-1-i):
 5             if(nums[j]>nums[j+1]):  # 将较大的往后移
 6                 temp=nums[j+1]
 7                 nums[j+1]=nums[j]
 8                 nums[j]=temp
 9                 flag=1
10         if flag==0:break
11     return nums
复制代码
时间复杂度:最坏的情况下,要进行n-1趟排序,为n的平方
空间复杂度:为1

2023-9-10笔记
posted on   三天乐趣  阅读(31)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示