首页 > 其他分享 >练习:冒泡排序法

练习:冒泡排序法

时间:2023-09-10 14:33:39浏览次数:26  
标签:练习 nums 元素 冒泡排序 flag 集合 排序

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

(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笔记

标签:练习,nums,元素,冒泡排序,flag,集合,排序
From: https://www.cnblogs.com/yuntimer/p/17691181.html

相关文章

  • python爬虫练习2-百度热榜
    importrequestsfromlxmlimportetreeurl='https://top.baidu.com/board?tab=realtime'headers={'User-Agent':'Mozilla/5.0(WindowsNT10.0;Win64;x64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/116.0.0.0Safari/537.36&......
  • MySQL查询语句及练习题
    查询记录查询数据库表中列的数据SELECT*,列名FROM表名WHERE条件GROUPBY分组HAVING过滤ORDERBY排序LIMIT分页查询分组查询GROUPBY子句用于根据一个或多个列对结果进行分组--统计员工表中职位的分类信息SELECTJ职位FROM员工表GROUPBY职位;--统计员工表......
  • MySQL查询命令练习(二)
    详细的命令总结及用法点这里就好了^_^      ⬇⬇⬇《MySQL命令总结》看完命令用法看看下面的题吧根据题目要求,写出SQL语句namecoursescore张三语文85张三数学82李四语文85李四数学81李四英语88王五语文75王五数学85王五化学99创建表并验证CREATETABLEstudent(name......
  • 亿信ABI函数练习
    1、常见函数NOW():获取当前系统时分秒TODAY():获取当前系统年月日DATETOST():年月日转换成字符串STR():数字转换成字符串STRCAT():字符串拼接使用CASE加SUM进行统计求和,count进行统计个数报表模板没有设置分辨率的地方,只有酷屏跟wbi上可以设置分辨率地图绑定表格:基础属性—>区域绑......
  • 用来练习sql的库表创建sql文件
    1.创建work.sql文件,填写以下内容--MySQLdump10.13Distrib5.7.43,forLinux(x86_64)----Host:localhostDatabase:work----------------------------------------------------------Serverversion 5.7.43/*!40101SET@OLD_CHARACTER_SET_CLIENT=@@CHARACT......
  • 牛客练习赛 115 记录
    牛客练习赛115赛时AC题目A.Mountainsequence点击查看代码/*1.根据山峰数列的定义,用排列组合知识去计算即可。*/#include<bits/stdc++.h>#definelllonglongusingnamespacestd;constintmaxn=1e5+5;intt,n;inta[maxn];llans;constintMOD=998244353;......
  • MySQL查询命令练习(一)
    如果需要详细的命令总结在我--软件测试--个人分类里,不想翻阅的话点这个连接也可以哈《MySQL命令总结》https://blog.51cto.com/u_16239770/7383954添加记录语法格式--指定列插入数据INSERTINTO表名(列名1,列名2)VALUES(列值1,列值2);--全部列插入数据 INSERTINTO表名VALUE......
  • 2039:【例5.6】冒泡排序
    2039:【例5.6】冒泡排序时间限制:1000ms      内存限制:65536KB提交数:51543   通过数:28200【题目描述】编程输入n(1≤n≤20)(1≤n≤20)个小于10001000非负整数,然后自动按从大到小的顺序输出。(冒泡排序)【输入】第一行,数的个数n;第二行,n个非负整数。......
  • python爬虫练习1-百度图片
     写了一个简单的爬图片练习importrequestsimportosdefbd_img(title1):url=f'https://image.baidu.com/search/acjson?tn=resultjson_com&logid=10755979809828115852&ipn=rj&ct=201326592&is=&fp=result&fr=&word={title1}&queryWord......
  • oj练习题程序编程题
    打印图形Description按要求输出由*组成的图案Input无需输入Output输出下面由“组成的图案卡  11  print('*')print("***")print("*****")print("*")print("*")print("*")  11 ......