python冒泡排序代码通俗理解(详解python算法之冒泡排序)
python冒泡排序代码通俗理解
详解python算法之冒泡排序python之冒泡排序
概念: 重复地走访过要排序的元素列,依次比较两个相邻的元素,如果他们的顺序(如从大到小、首字母从a到z)错误就把他们交换过来。走访元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成
这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序”。
算法原理
冒泡排序算法的原理如下:
比较相邻的元素。如果第一个比第二个大,就交换他们两个。
对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。
针对所有的元素重复以上的步骤,除了最后一个。
持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。
算法分析
时间复杂度
若文件的初始状态是正序的,一趟扫描即可完成排序。所需的关键字比较次数
和记录移动次数 均达到最小值: , 。
所以,冒泡排序最好的时间复杂度为 。
冒泡排序的最坏时间复杂度为
代码实现
伪代码
|
function bubble_sort (array, length) { var i, j; for (i from 1 to length - 1 ){ for (j from 0 to length - 1 - i){ if (array[j] > array[j + 1 ]) swap(array[j], array[j + 1 ]) } } } |
伪代码解释
函数 冒泡排序 输入 一个数组名称为array 其长度为length
i 从 1 到 (length - 1)
j 从 0 到 (length - 1 - i)
如果 array[j] > array[j + 1]
交换 array[j] 和 array[j + 1] 的值
如果结束
j循环结束
i循环结束
函数结束
助记码
|
i∈[ 0 ,n - 1 ) / / 循环n - 1 遍 j∈[ 0 ,n - 1 - i) / / 每遍循环要处理的无序部分 swap(j,j + 1 ) / / 两两排序(升序 / 降序) |
python代码
|
#-*-coding:utf-8-*- '''冒泡排序也称 bubble sort从小到大排序''' import time def bubble_sort(lst): '''冒泡排序''' # 第一次循环 for n in range ( len (lst) - 1 , 0 , - 1 ): #计算原列表的长度-1,取倒序索引 for i in range (n): if lst[i] > lst[i + 1 ]: # 比较最后一个与倒数第二个数的值,如果倒数第二个的值,大于最后一个的值 temp = lst[i] # 则将倒数第二个值赋值给临时变量temp lst[i] = lst[i + 1 ] # 替换原列表中倒数第二个索引的值为最后一个 lst[i + 1 ] = temp # 同时改变原列表中最后一个索引值为倒数第二个的值 return lst if __name__ = = "__main__" : lst = [ 54 , 26 , 93 , 17 , 77 , 31 , 44 , 55 , 20 ] af_sort = bubble_sort(lst) print (af_sort) |
总结冒泡排序的实现(类似下面)通常会对已经排序好的数列拙劣地运行(),而插入排序在这个例子只需要个运算。算法的核心知识点是: 循环比较, 交叉换位!
原文链接:https://www.cnblogs.com/failymao/p/10474674.html
- python中三种基本的数值类型(python基础知识一变量与简单数据类型详解)
- python面向对象基本思想(详解Python:面向对象编程)
- python里import的是什么(python中import与from方法总结推荐)
- python数据分割教程(python3对拉勾数据进行可视化分析的方法详解)
- python 二维数组怎么取第二列(python实现二维数组的对角线遍历)
- python协程结果(深入浅析python 协程与go协程的区别)
- Python实现FTP弱口令扫描器的方法示例(Python实现FTP弱口令扫描器的方法示例)
- 如何用python做一个弹窗(python实现祝福弹窗效果)
- python 导入指定文件夹的模块(Python实现的在特定目录下导入模块功能分析)
- python技巧图解(Python魔法方法功能与用法简介)
- pythonhtml文件分析(对Python3 解析html的几种操作方式小结)
- python定时任务脚本(对Python定时任务的启动和停止方法详解)
- python 正则表达式在代码里的使用(python中正则表达式与模式匹配)
- python numpy矩阵详解(基于Numpy.convolve使用Python实现滑动平均滤波的思路详解)
- python本地ocr库(详解Python安装tesserocr遇到的各种问题及解决办法)
- 最简单python的100个代码(20条非常实用的Python代码实例)
- 赵丽颖第一部当女主的戏,主角配角个个都是实力演员(赵丽颖第一部当女主的戏)
- 乾隆为何这么喜爱白塔原因是什么(乾隆为何这么喜爱白塔原因是什么)
- 逐渐消失的东北八大怪现象,进步的社会里我们遗失的是什么(逐渐消失的东北八大怪现象)
- 今日大雪,大雪养生这样做,一年都有好气色(大雪养生这样做)
- 粗盐是什么 粗盐的功效与作用(粗盐的功效与作用)
- 会 吃人 的客机 从天堂到地狱只需5分钟,图-104如何做到(会吃人的客机)
热门推荐
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9