前几天看了个冒泡的排序,这里手敲了一下代码,简单记录如下:

def bubble_sort(arr, order='asc'):
# #可选升降序的冒泡排序, order>0升序,order<0降序
# swapNeeded = True # flag位
counter = 0 # 计数(用于统计多少次排好序)
for i in range(len(arr)): # 这个循环负责设置冒泡排序进行的次数(比如说n个数,则只要进行n-1次冒泡,就可以把这个n个数排序好) swap_needed = False
for j in range(0, len(arr)-i-1):
# 这里这个j呢就是控制每一次具体的冒泡过程,请你想一想,我们第一次冒泡需要冒几次,也就是说需要比较几次,
# 假如有三个数,那只需要两次就可以了,当下一次时,最后一个
# 已经是有序的了,所以说少冒泡一次,所以这里j每次都会减去i的值,即不用冒“无用之泡泡” if order == 'asc':
if arr[j] > arr[j+1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swap_needed = True elif order == 'desc':
if arr[j] < arr[j+1]:
arr[j], arr[j + 1] = arr[j + 1], arr[j]
swap_needed = True if not swap_needed:
break
i += 1
counter += 1 return arr, counter arr = [34,2,5,4,17,36,8]
# print(bubble_sort(arr))
print(bubble_sort(arr, 'asc'))
print(bubble_sort(arr, 'desc'))

结果:

([2, 4, 5, 8, 17, 34, 36], 3)
([36, 34, 17, 8, 5, 4, 2], 6)

参考:"菜鸟教程"

"python排序算法之一:冒泡排序(及其优化)"

最新文章

  1. 汇编实现点亮Led灯(2440)
  2. eclipse安装maven
  3. UVA 10054 the necklace 欧拉回路
  4. Unity3D 系统宏
  5. Daily Scrum – 1/19
  6. yii2开启session
  7. Rate Limiter设计
  8. 完整实例(C# Socket)
  9. 《head first java 》读书笔记(二)
  10. ubuntu上如何安装和卸载google chrome 浏览器
  11. IP,TCP,UDP Checksum校验
  12. Verdigris: Qt without moc
  13. RMAN中FILESPERSET设置对备份速度的影响
  14. 在ABP框架中使用MapTo容易犯的错误
  15. oracle AWR性能监控报告生成方法
  16. 1git命令的使用,查看git仓库状态,添加文件到git跟踪,git提交,查看git分支,查看git仓库日志信息,切换git分支,解决git分支合并后出现冲突的问题
  17. 【翻译】Ext JS 5的委托事件和手势
  18. 获取redis主从复制链SHELL脚本
  19. SQLServer安装步骤(2012版为例)
  20. LinuxMint上安装redis和python遇到的一些问题

热门文章

  1. OPTIONS 请求引发的分析
  2. os模块操作文件
  3. 1、Hibernate-入门
  4. 单点登录 - OAuth 2.0 授权码模式(一)
  5. P3106 [USACO14OPEN]GPS的决斗(最短路)
  6. 九:写了一下红帽免费的centos6的安装步骤
  7. 8.5 NOIP 模拟测试 13
  8. PHP经典算法题
  9. phpStudy中MySQL版本升级到5.7.17方法
  10. Ubuntu 16.04.4 LTS设置root用户登陆图形界面