python写冒泡排序
2024-10-08 03:31:36
冒泡就是重复地遍历要排序的数列,一次比较两个元素(泡泡),如果他们的顺序错误就把他们交换过来,像泡泡一样,依次按照顺序上升排列。
冒泡排序算法的运作如下:
- 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。
- 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
- 针对所有的元素重复以上的步骤,除了最后一个。
- 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
写了三种冒泡,大同小异,差不多都一样昂,这应该是注释最多的冒泡排序了吧O(∩_∩)O哈哈~ 1 ##第一种冒泡##
a=[2,9,4,1]#列表
n=len(a)#a的列表元素长度.n=4
for i in range(n-1):#外循环,控制循环轮数,n-1是索引从0开始取的。(n-1=3)
for j in range(n-i-1):#内循环控制元素循环次数(n-i-1=3)
if a[j]>a[j+1]:#j=0,j+1=1,如果a[0]>a[0+1]
a[j],a[j+1]=a[j+1],a[j]#复合赋值,如果满足条件则进行调换
print(a)
##第二种冒泡##
a=[2,9,4,1]#列表
n=len(a)#a的列表元素长度.n=4
for i in range(n-1):#外循环,控制循环轮数,n-1是索引从0开始取的。(n-1=3)
for j in range(n-i-1):#内循环控制元素循环次数(n-i-1=3)
if a[j]>a[j+1]:#j=0,j+1=1,如果a[0]>a[0+1]
#这种调换方式比较麻烦些,不像上一个一步到位
jj = a[j + 1]#把a[j+1]赋值给jj
a[j + 1] = a[j]#然后再把a[j]赋值给a[jz=1]
a[j] = jj#然后再把jj赋值给a[j]
print(a)
##第三种冒泡##
aa = [2,9,4,1]
def sort(aa):#定义一个函数
print('排序前:')
print(aa)
for i in range(len(aa)-1):#len(aa)#得出aa的元素长度
for j in range(len(aa)-1-i):#剩下的就给上面的一样了
if aa[j]>aa[j+1]:
aa[j],aa[j+1]=aa[j+1],aa[j]
print('第{}次排序后:'.format(i+1))#用到了format函数
print(aa)
sort(aa)
print('排序后:')
print(aa)
最后来个直接排序的函数,一招制敌。
aa = [2,9,4,1]
aa.sort(reverse=False)#sort直接排序函数,True 降序,False 升序(默认)。
print(aa)
最新文章
- struts2 s:file标签使用及文件上传例子
- 总结Android中遇见的OOM
- 关于html自闭合标签要不要加空格和斜杠的问题?
- iOS拨打电话的三种方式
- 高校排名 加强版(codevs 2799)
- SoapUI中如何传递cookie
- 理解MapReduce
- IT项目量化管理:细化、量化与图形化 与 中国IT项目实施困惑
- 隐式Intent实例
- 安卓仿制新浪微博(一)之OAuth2授权接口
- Visual Studio 2012设置Jquery/Javascript智能提示
- NPOI导Excel样式设置(转)
- ELK日志收集分析系统配置
- Redis+Twemproxy+HAProxy集群(转) 干货
- unity中手机触摸代码
- tar压缩文件排除文件夹【原创】
- SOAP port
- C#中巧用#if DEBUG 进行调试
- java aop做一个接口耗时的计算
- HDUOJ--畅通工程
热门文章
- 测试安装phpmyadmin4.0
- 跳出手掌心--如何立即触发UIButton边界事件
- 自定义View系列教程03--onLayout源码详尽分析
- oracle函数 NLS_LOWER(x[,y])
- Android 高仿QQ滑动弹出菜单标记已读、未读消息
- react框架下,在页面内加载显示PDF文件,关于react-pdf-js的使用注意事项
- java代码注释:单行//,多行/* */,文档注释/** */
- 2018-7-31-C#-判断两条直线距离
- WPF 从零开始开发 dotnet Remoting 程序
- H3C 各类路由默认优先级