Python冒泡排序算法
来源:互联网 发布:如何看c语言程序的执行 编辑:程序博客网 时间:2024/05/17 00:07
Num01–>冒泡排序定义
冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。
冒泡排序算法的运作如下:
1、比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
3、针对所有的元素重复以上的步骤,除了最后一个。
4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
Num02–>冒泡排序详细分析过程
交换过程图示(第一次):
那么我们需要进行n-1次冒泡过程,每次对应的比较次数如下图所示
Num03–>采用Python语言实现
#!/usr/bin/env python# -*- coding: utf-8 -*-# @Author : xiaokedef bubble_sort(alist): # 结算列表的长度 n = len(alist) # 外层循环控制从头走到尾的次数 for j in range(n - 1): # 用一个count记录一共交换的次数,可以排除已经是排好的序列 count = 0 # 内层循环控制走一次的过程 for i in range(0, n - 1 - j): # 如果前一个元素大于后一个元素,则交换两个元素(升序) if alist[i] > alist[i + 1]: # 交换元素 alist[i], alist[i + 1] = alist[i + 1], alist[i] # 记录交换的次数 count += 1 # count == 0 代表没有交换,序列已经有序 if 0 == count: breakif __name__ == '__main__': alist = [54, 26, 93, 77, 44, 31, 44, 55, 20] print("原列表为:%s" % alist) bubble_sort(alist) print("新列表为:%s" % alist) # 结果如下: # 原列表为:[54, 26, 93, 77, 44, 31, 44, 55, 20] # 新列表为:[20, 26, 31, 44, 44, 54, 55, 77, 93]
Num04–>冒泡排序时间复杂度
最优时间复杂度:O(n) (表示遍历一次发现没有任何可以交换的元素,排序结束。)
最坏时间复杂度:O(n^2)
稳定性:稳定
阅读全文
0 0
- Python -- 冒泡排序算法
- Python冒泡排序算法
- Python:冒泡排序算法
- Python排序算法-冒泡排序
- 排序算法-冒泡排序(python)
- Python实现冒泡排序算法
- 冒泡排序算法-Python描述
- Python实现冒泡排序算法
- 冒泡排序算法 Python实现
- Python算法 冒泡排序和选择排序
- 排序算法C++&&Python实现---冒泡排序
- python算法实践3-冒泡排序
- python数据结构与算法30 冒泡排序
- 重温算法入门经典,PYTHON冒泡排序
- 排序算法—冒泡排序算法分析与实现(Python)
- 桶排序,冒泡排序,快速排序算法Python实现
- [排序] 冒泡排序(Python)
- 【Python排序搜索基本算法】之冒泡排序
- ajax晋级篇---无刷新的数据交互用户名验证----json反馈
- web 框架详解(python)
- ARM处理器的协处理器CP15/CP14
- 授权普通用户 sudo -i 使其具有root的权限
- c# progressBar进度条改变颜色及显示进度数字
- Python冒泡排序算法
- 把数组中数字连起来组成一个最小的数字
- git使用指南
- dd 命令拷贝linux系统
- sklearn:使用GBDT选择特征
- log4net使用流程
- Python + worldcloud + jieba 十分钟学会用任意中文文本生成词云
- 经典String str = new String("abc")内存分配问题
- Android的Hander传输List,Map;