冒泡是最费时的排序,但可以自定义更多步骤。

短冒泡确实可以加快性能。

  1. # coding = utf-8
  2.  
  3. # ========冒泡排序========
  4. def bubble_sort(a_list):
  5. loop_count = 0
  6. swap_count = 0
  7. for i in range(len(a_list)):
  8. loop_count += 1
  9. for j in range(i+1, len(a_list)):
  10. # print(a_list)
  11. loop_count += 1
  12. if a_list[i] > a_list[j]:
  13. swap_count += 1
  14. a_list[i], a_list[j] = a_list[j], a_list[i]
  15. print('======== bubble_sort loop_count========', loop_count)
  16. print('========bubble_sort swap_count========', swap_count)
  17.  
  18. # '========短冒泡排序========
  19. def short_bubble_sort(a_list):
  20. loop_count = 0
  21. swap_count = 0
  22. exchange = True
  23. pass_num = len(a_list) - 1
  24. while pass_num > 0 and exchange:
  25. loop_count += 1
  26. exchange = False
  27. for i in range(pass_num):
  28. loop_count += 1
  29. if a_list[i] > a_list[i+1]:
  30. swap_count += 1
  31. exchange = True
  32. temp = a_list[i]
  33. a_list[i] = a_list[i + 1]
  34. a_list[i + 1] = temp
  35. pass_num -= 1
  36. print('========short_bubble_sort loop_count========', loop_count)
  37. print('========short_bubble_sort swap_count========', swap_count)
  38.  
  39. my_list = [4, 5, 7, 2, 9, 7, 9, 54, 765, 45, 9876, 34, 12343, 36]
  40. bubble_sort(my_list)
  41. print(my_list)
  42.  
  43. my_short_list = [4, 5, 7, 2, 9, 7, 9, 54, 765, 45, 9876, 34, 12343, 36]
  44. short_bubble_sort(my_short_list)
  45. print(my_short_list)

  

  1. D:\cheng\test\Scripts\python.exe D:/GIT/Prism4K/Prism4K/document/tests.py
  2. ======== bubble_sort loop_count======== 105
  3. ========bubble_sort swap_count======== 15
  4. [2, 4, 5, 7, 7, 9, 9, 34, 36, 45, 54, 765, 9876, 12343]
  5. ========short_bubble_sort loop_count======== 69
  6. ========short_bubble_sort swap_count======== 15
  7. [2, 4, 5, 7, 7, 9, 9, 34, 36, 45, 54, 765, 9876, 12343]
  8.  
  9. Process finished with exit code 0

  

python---冒泡和短冒泡排序的更多相关文章

  1. python排序之二冒泡排序法

    python排序之二冒泡排序法 如果你理解之前的插入排序法那冒泡排序法就很容易理解,冒泡排序是两个两个以向后位移的方式比较大小在互换的过程好了不多了先上代码吧如下: 首先还是一个无序列表lis,老规矩 ...

  2. Python 冒泡法排序

    def sequence(disorder='', separators=''): arrays = disorder.split(separators) def desc(): for i in r ...

  3. python算法与数据结构-冒泡排序算法(32)

    一.冒泡排序介绍 冒泡排序(英语:Bubble Sort)是一种简单的排序算法.它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.遍历数列的工作是重复地进行直到没有再需要 ...

  4. python数据结构与算法——冒泡排序

    用两种方式实现,非递归和递归 直接上代码: 先是失败的递归方式,涉及到对象引用的问题: # Bad 想一想为啥不行? def bubblesort_rec_bad(A): if len(A)==1: ...

  5. 你需要知道的九大排序算法【Python实现】之冒泡排序

    二.冒泡排序 基本思想:它的思路很有特点循环,两两向后比较.它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来.走访数列的工作是重复地进行直到没有再需要交换,也就是说该数 ...

  6. python 冒泡和快排,不多说【无聊】

    #-*-coding:utf8-*- import random a=[] b=[] def init_array(): for i in range(10000): v = random.randi ...

  7. Python冒泡算法和修改配置文件

    先学习之前未完成的冒泡算法 li = [13,22,6,99,11] 从小到大 从第一个数字比较把大的往后移位 for m in range(4): num1 = li[m] num2 = li[m+ ...

  8. 初试Python语法小试牛刀之冒泡排序

    Python很火,心里很慌,没吃过猪肉,也要见见猪走路. 看了几天Python的语法,大概初步了解了一点点,https://www.liaoxuefeng.com/wiki/0014316089557 ...

  9. 用Python免费发短信,实现程序实时报警

    进入正文 今天跟大家分享的主题是利用python库twilio来免费发送短信. 先放一张成品图: 代码放在了本文最后的地址中 正文 眼尖的小伙伴已经发现了上面的短信的前缀显示这个短信来自于一个叫Twi ...

随机推荐

  1. js变量的解构赋值

    今天在学习时看到几段代码,让我感叹JS的灵活,特此一记: let stateObj = {a:1,b:3}; let newObj = {b:13,c:4} ; stateObj = {...stat ...

  2. Python备份MySQL数据库【转】

    #!/usr/bin/env python # coding: utf- import os import time ''' defined variable ''' databases=['hch' ...

  3. xpath 中 [<Element a at 3985984dj343>]

    在写爬虫用xpath抓取数据的时候出现了这个问题,列表中都是很多个 < element > 首先这不是报错,也不是你的xpath语法有错. 将这个数据列表循环,循环出的item就是你想要的 ...

  4. python用WMI模块获取系统命名空间

    可以和winmgmts的查询页面对应 from win32com.client import GetObject import pywintypes result=[] def enum_namesp ...

  5. canvas - 钟表

    Demo : Demo Demo截图: 代码: <!DOCTYPE html> <html lang="en"> <head> <meta ...

  6. web@css盒模型详解

    Margin(外边距) - 清除边框外的区域,外边距是透明的./*上 右 下 左*/ 上 左右 下 /*上下 左右*/ 四方 /Border(边框) - 围绕在内边距和内容外的边框.      可以用 ...

  7. maven项目板块的pom.xml配置

    项目名为helloweb 项目文件结构图1 helloweb>pom.xml内容如下: <project xmlns="http://maven.apache.org/POM/4 ...

  8. jenkins 安装网址

    https://wiki.jenkins.io/display/JENKINS/Installing+Jenkins

  9. Confluence 6 配置避免管理员联系表单垃圾

    你可以配置 Confluence 使用验证码(Captcha)来避免垃圾内容发送给 Confluence 管理员.有关管理员联系表单验证码的内容在全站验证码设置中进行配置,相关的文档请参考 Confi ...

  10. OSError: cannot identify image file

    OSError: cannot identify image file <_io.BytesIO object at 0x00000236DD598BF8> 说一下为什么会出现OSErro ...