排序算法—冒泡排序算法分析与实现(Python)
来源:互联网 发布:linux查看网卡速率 编辑:程序博客网 时间:2024/04/29 21:21
December 22, 2015 1:12 PM
原理是临近的数字两两进行比较,按照从小到大或者从大到小的顺序进行交换,这样一趟过去后,最大或最小的数字被交换到了最后一位,然后再从头开始进行两两比较交换,直到倒数第二位时结束,其余类似看例子。
例子为从小到大排序,
原始待排序数组| 6 | 2 | 4 | 1 | 5 | 9 |
第一趟排序(外循环)
第一次两两比较6 > 2交换(内循环)
交换前状态| 6 | 2 | 4 | 1 | 5 | 9 |
交换后状态| 2 | 6 | 4 | 1 | 5 | 9 |
第二次两两比较,6 > 4交换
交换前状态| 2 | 6 | 4 | 1 | 5 | 9 |
交换后状态| 2 | 4 | 6 | 1 | 5 | 9 |
第三次两两比较,6 > 1交换
交换前状态| 2 | 4 | 6 | 1 | 5 | 9 |
交换后状态| 2 | 4 | 1 | 6 | 5 | 9 |
第四次两两比较,6 > 5交换
交换前状态| 2 | 4 | 1 | 6 | 5 | 9 |
交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |
第五次两两比较,6 < 9不交换
交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |
第二趟排序(外循环)
第一次两两比较2 < 4不交换
交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
交换后状态| 2 | 4 | 1 | 5 | 6 | 9 |
第二次两两比较,4 > 1交换
交换前状态| 2 | 4 | 1 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |
第三次两两比较,4 < 5不交换
交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |
第四次两两比较,5 < 6不交换
交换前状态| 2 | 1 | 4 | 5 | 6 | 9 |
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |
第三趟排序(外循环)
第一次两两比较2 > 1交换
交换后状态| 2 | 1 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
第二次两两比较,2 < 4不交换
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
第三次两两比较,4 < 5不交换
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
交换后状态| 1 | 2 | 4 | 5 | 6 | 9 |
第四趟排序(外循环)无交换
第五趟排序(外循环)无交换
冒泡排序动画演示
排序完毕,输出最终结果1 2 4 5 6 9
#BubbleSort.py#王渊#2015.12.21#Email:wyxidian@gmail.comfrom pylab import *def BubbleSort(data): length = data.__len__() #获取数据长度 flag = True #标记依次遍历是否有数据交换,如果没有,排序完成 for i in range(length): while(flag): flag = False for j in range(length-i-1): if(data[j]>data[j+1]): #如果当前值大于下一个值,交换顺序 data[j],data[j+1] = data[j+1],data[j] flag = True return datadata = array([48,1,16,62,73,88,24,59,99,0,35])print("The original data is : ", data)data = BubbleSort(data)print("The result of sorted data is : ", data)
运行结果:
The original data is : [48 1 16 62 73 88 24 59 99 0 35]The result of sorted data is : [ 0 1 16 24 35 48 59 62 73 88 99]
- 排序算法—冒泡排序算法分析与实现(Python)
- 排序算法—选择排序算法分析与实现(Python)
- 排序算法—希尔排序算法分析与实现(Python)
- 排序算法—堆排序算法分析与实现(Python)
- 排序算法—归并排序算法分析与实现(Python)
- 排序算法—快速排序算法分析与实现(Python)
- Python实现冒泡排序算法
- Python实现冒泡排序算法
- 冒泡排序算法 Python实现
- 【排序算法】冒泡排序的实现与分析
- 排序算法C++&&Python实现---冒泡排序
- 冒泡排序算法分析!
- 冒泡排序算法分析
- 冒泡排序算法分析
- 算法分析:冒泡排序
- Python -- 冒泡排序算法
- Python冒泡排序算法
- Python:冒泡排序算法
- Web 数据存储总结
- 矩阵转置偏导数
- 15个优秀的PHP免费在线学习网站
- iOS 静态库开发
- 20个基于PHP的开源内容管理系统推荐
- 排序算法—冒泡排序算法分析与实现(Python)
- 修改Discuz论坛最高在线人数记录的方法
- mongodb 索引建立问题
- QT解析QJsonObject和QJsonArray以及和QByteArray之间的相互转换
- 30+实用的CSS代码片段
- Spark MLlib 中power iteration clustering (PIC)算法简介
- 2015.12.21
- 应用运行时,仿横幅通知显示推送消息
- svn 忽略文件