利用python实现冒泡排序算法实例代码

 更新时间:2019年12月01日 09:20:19   作者:pypypypy  
这篇文章主要给大家介绍了关于如何利用python实现冒泡排序算法的相关资料,文中通过示例代码介绍的非常详细,对大家学习或者使用python具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧

冒泡排序

冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序算法的运作如下:

1、比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

冒泡排序,一个经典的排序算法,因在算法运行中,极值会像水底的气泡一样逐渐冒出来,因此而得名。

冒泡排序的过程是比较两个相邻元素的大小,然后根据大小交换位置,这样从列表左端开始冒泡,最后最大值会依次从右端冒出。 

python实现冒泡排序:

def bubble_sort(nums):

 for i in range(len(nums) - 1):

  for j in range(len(nums) - i - 1):

   if nums[j] > nums[j + 1]:

    nums[j], nums[j + 1] = nums[j + 1], nums[j]

 return nums

python实现冒泡排序的核心思想是通过从列表一端迭代循环元素,再通过一个循环让这个元素之后的元素相邻两个比较,从而依次将最大值移动到最末端,如下图示意。

本想放gif图的,放不上有点问题。

关于冒泡排序的时间复杂度,在上面python实现的代码中时间复杂度是n的平方,当然可以再考虑一下极端的情况:当队列已经从小到大排好序或者从大到小排好序,从小到大排好顺序时可以只扫描一遍就结束排序,此时时间复杂度为O(n),如果是从大到小,那么就需要扫描n-1次,同时需要比较交换n-1次,时间复杂度为n的平方 。

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,谢谢大家对脚本之家的支持。

相关文章

  • python神经网络MobileNetV3 small模型的复现详解

    python神经网络MobileNetV3 small模型的复现详解

    这篇文章主要为大家介绍了python神经网络MobileNetV3 small模型的复现详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • python数据库编程 ODBC方式实现通讯录

    python数据库编程 ODBC方式实现通讯录

    这篇文章主要为大家详细介绍了python数据库编程,ODBC方式实现通讯录,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-03-03
  • Python中csv文件的写入与读取方法例子

    Python中csv文件的写入与读取方法例子

    这篇文章主要给大家介绍了关于Python中csv文件的写入与读取方法的相关资料,csv是"Comma-Separated Values(逗号分割的值)"的首字母缩写,它其实和txt文件一样,都是纯文本文件,使用Python来读写csv文件是非常容易的,需要的朋友可以参考下
    2023-09-09
  • 如何在VSCode上轻松舒适的配置Python的方法步骤

    如何在VSCode上轻松舒适的配置Python的方法步骤

    这篇文章主要介绍了如何在VSCode上轻松舒适的配置Python的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-10-10
  • 图文详解梯度下降算法的原理及Python实现

    图文详解梯度下降算法的原理及Python实现

    梯度下降是迭代法的一种,可以用于求解最小二乘问题(线性和非线性都可以)。本文将通过图文详解梯度下降算法的原理及实现,需要的可以参考一下
    2022-08-08
  • 基于python实现rpc远程过程调用

    基于python实现rpc远程过程调用

    本文主要介绍了基于python实现rpc远程过程调用,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-06-06
  • PyTorch深度学习LSTM从input输入到Linear输出

    PyTorch深度学习LSTM从input输入到Linear输出

    这篇文章主要为大家介绍了PyTorch深度学习LSTM从input输入到Linear输出深入理解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05
  • Django提高查询速度的9种方法总结

    Django提高查询速度的9种方法总结

    Django作为一个高度可扩展的Web框架,提供了多种方式来优化数据库查询,本文将介绍一些常用的Django数据库查询优化技巧,需要的可以参考一下
    2023-07-07
  • 关于vscode 默认添加python项目的源目录路径到执行环境的问题

    关于vscode 默认添加python项目的源目录路径到执行环境的问题

    这篇文章主要介绍了vscode 默认添加python项目的源目录路径到执行环境,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Python编程之变量赋值操作实例分析

    Python编程之变量赋值操作实例分析

    这篇文章主要介绍了Python编程之变量赋值操作,结合实例形式分析了Python赋值、位移、多元赋值操作符等相关操作使用技巧,需要的朋友可以参考下
    2017-07-07

最新评论