文章目录

  • 前言
  • 一、冒泡排序概念
  • 二、原理分析
    • 小结
  • 三、代码实现
    • 1.排序方式小------->大
    • 2.排序方式大------->小
  • 总结

前言

我在大学里面主要学习的语言主要是python,而这一学就是4年,不敢说有多么厉害,但是还是有一点点基础,由于最近都在学Java,对于python就基本不摸了,但是一想不对,最起码还是随便看看,敲敲代码吧,反正工具IDE还在。

一、冒泡排序概念

冒泡排序是一种对有序集合中数据元素排序的方法。每一次对有序集合的遍历都是将较大数交换到后面,重复这个过程,每次遍历都会将最大值换到最后一位,每次遍历后,该有序集合的规模都会减少一个。

二、原理分析

为了方便我干脆就使用list,里面的元素未冒泡排序为1,8,6,5,2
第一趟,一共有有5个数据

比较 谁大 是否交换位置 目前列表
1和8比 8大 [1,8,6,5,2]
8和6比 8大 [1,6,8,5,2]
8和5比 8大 [1,6,5,8,2]
8和2比 8大 [1,6,5,2,8]

5个数据第一趟比了4次

第二趟

比较 谁大 是否交换位置 目前列表
1和6比 6大 [1,6,5,2,8]
6和5比 6大 [1,5,6,2,8]
6和2比 6大 [1,5,2,6,8]

比了3次

第三趟

比较 谁大 是否交换位置 目前列表
1和5比 5大 [1,5,2,6,8]
5和2比 5大 [1,2,5,6,8]

比了2次

第四趟

比较 谁大 是否交换位置 目前列表
1和2比 2大 [1,2,5,6,8]

比了一次

小结

1、如上面的需要排序的列表的元素数据有5个,比了4趟,从这个规律我们可以得出一个需要排序的有序集合n元素则需要比较n-1
2、从上面的每一趟比较的次数中,我们可以找到这么一个规律,列表中元素的个数 = 第几趟+在该趟中比较的次数,如果是需要排序的有序集合n元素那么比如第一趟就可以写成n = 1+n-1,最后一趟(n-1趟)就可以写成n = n-1 +1。
3、每一次比较都会比出一个最大值放在后面
4、每回比较都是两个数据在比较,视比较结果交换位置

三、代码实现

1.排序方式小------->大

代码如下(示例):

# -*- coding: utf-8 -*-
"""
Created on Fri Mar  5 21:27:27 2021@author: 老赖的小弟
"""
# 准备需要排序的列表
list = [1,8,6,5,2]
# 获得list的长度
length = len(list)
# 设置交换需要的临时变量temp
temp=list[0]
# 根据冒泡排序原理及元素个数设置循环的趟数
for i in range(0,length-1):# 根据冒泡排序原理设定每趟需要比较的次数for j in range(0,length-i-1):# 根据比较大小判断是否需要交换if list[j] > list[j+1]:# 开始交换temp = list[j]list[j] = list[j+1]# 交换结束list[j+1] = tempprint(list)

代码如下(输出):

[1, 2, 5, 6, 8]

2.排序方式大------->小

# 准备需要排序的列表
list = [1,8,6,5,2]
# 获得list的长度
length = len(list)
# 设置交换需要的临时变量temp
temp=list[0]
# 根据冒泡排序原理及元素个数设置循环的趟数
for i in range(0,length-1):# 根据冒泡排序原理设定每趟需要比较的次数for j in range(0,length-i-1):# 根据比较大小判断是否需要交换if list[j] < list[j+1]:# 开始交换temp = list[j]list[j] = list[j+1]# 交换结束list[j+1] = tempprint(list)

代码如下(输出):

[8, 6, 5, 2, 1]

总结

其实写代码是其次的,主要是弄明白原理,如果弄不明白原理,那就是等于背代码,很大程度上是做无用功,当然如果你弄明白原理,无非就是换个环境来实现,所以原理很重要(说给初学者听得)。
其实这个大到小还是小到大排序其他都是一样的,只是判断条件哪里if list[j] < list[j+1] 大于,小于符号的改变。这写了几个月的Java代码再来写python真的是满满Java味,特别是冒号,不自主的写成分号,太变扭了。

Python——冒泡排序(原理剖析)相关推荐

  1. python冒泡排序原理_如何实现python冒泡排序算法?

    冒泡排序是一种简单的排序技术,它通过比较相邻的元素遍历整个列表,对它们进行排序并交换元素,直到对整个列表进行排序. 算法:给定一个包含n个元素的列表L,这些元素的值或记录为L0, L1,-,Ln-1, ...

  2. Python冒泡排序深度剖析

    题目: 给你一个数组,通过冒泡排序倒序输出,并打印每一步排序步骤. 原理: 要实现冒泡排序算法,我们首先就要理解冒泡排序算法的本质和原理.顾名思义,冒泡排序就是像水中的泡泡一样,将数列中所有相邻的两个 ...

  3. [python交互]Excel催化剂与python交互原理剖析,py开发者按此规范可自行扩展功能...

    只需简单地编写小段py脚本,就可以借助Excel催化剂的平台作用,将写出的py脚本,嫁接到Excel的环境上使用,在Excel的广阔用户群体上带来更多的产出价值.也大大增加了将自己的python技能输 ...

  4. python 冒泡排序 原理_用Python实现排序算法——冒泡排序

    正在学习Python,然后呢,也想复习一下算法,所以采取这样的方式,一举两得.后面会用python逐步完成常用算法,算是学习笔记了. 贴代码之前还是先描述算法原理.冒泡的原理(以下描述为降序排序)是: ...

  5. python冒泡排序原理_python冒泡排序详解

    要学习冒泡排序必须知道它的原理: 冒泡排序算法的原理如下: 比较相邻的元素.如果第一个比第二个大,就交换他们两个. 对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对.在这一点,最后的元素应该 ...

  6. python原理书籍_python书籍推荐:《深入浅出深度学习:原理剖析与Python实践》

    在过去的这十年,深度学习已经席卷了整个科技界和工业界,2016年谷歌阿尔法狗打败围棋世界冠军李世石,更是使其成为备受瞩目的技术焦点. 今日,小编就为大家推荐一本能让初学者和"老司机" ...

  7. 彻底搞透视觉三维重建:原理剖析、代码讲解、及优化改进

    视觉三维重建 = 定位定姿 + 稠密重建 + surface reconstruction +纹理贴图.三维重建技术是计算机视觉的重要技术之一,基于视觉的三维重建技术通过深度数据获取.预处理.点云配准 ...

  8. Elasticsearch分布式一致性原理剖析(一)-节点篇

    2019独角兽企业重金招聘Python工程师标准>>> 摘要: ES目前是最流行的开源分布式搜索引擎系统,其使用Lucene作为单机存储引擎并提供强大的搜索查询能力.学习其搜索原理, ...

  9. 开源 serverless 产品原理剖析 - Kubeless

    背景 Serverless 架构的出现让开发者不用过多地考虑传统的服务器采购.硬件运维.网络拓扑.资源扩容等问题,可以将更多的精力放在业务的拓展和创新上. 随着 serverless 概念的深入人心, ...

最新文章

  1. 计算机里的dump是什么意思?(转储、转储文件)
  2. 从排序数组中删除重复项
  3. pipe实现单工和半双工模式
  4. Java用户定义对象的LinkedList
  5. Flutter StreamBuilder 实现的一个倒计时功能
  6. 【API进阶之路】研发需求突增3倍,测试团队集体闹离职
  7. IBM的漂浮机器人,被马斯克的火箭送去太空了
  8. 一个比较全介绍UltraGrid的博客
  9. 简易php access文章管理系统,PHP+ACCESS 文章管理程序代码
  10. 手机重装android系统,手机系统重装
  11. 人工智能建立本体库_本体:一文读懂领域本体构建
  12. java分配数组空间使用的关键字_创建数组时为数组元素分配内存空间的 Java 关键字是________(5.0分)_学小易找答案...
  13. 与FPGA相关的独热码
  14. Vue3源码之createApp
  15. 免费的进销存系统哪个好一些?
  16. 数据挖掘案例实战:利用LDA主题模型提取京东评论数据(四)
  17. 关于在tomcat9中配置server.xml中URIEncoding=UTF-8无效的解决方法
  18. 谷歌浏览器怎么更新升级 谷歌浏览器手动更新方法
  19. 领导说“辛苦啦”,下属怎么回答?这三种话术,给你职场加分
  20. 安全生产施工单位材料准备清单

热门文章

  1. python计算机二级含金量-大学生有必要去考取python二级证吗?
  2. 单片机8乘8点阵显示数字
  3. 怎么批量统计微博播放量、阅读、粉丝数据
  4. java动态生成树_Dtree+Jquery动态生成树节点例子
  5. 数据清洗之 数据分组方法
  6. audio 读取服务器文件夹,从互联网/服务器(并传递到nAudio声音播放器)流声音...
  7. 收拾好行囊 整理好心情 追梦
  8. java操作mongodb,泛型封装增删查改、条件查询等操作
  9. 对CAN总线的终端电阻,你知道多少?
  10. 探讨游戏服务器压力的三座大山——数据库、网络以及系统资源(1)