首页 > 编程语言 >python冒泡排序

python冒泡排序

时间:2024-08-27 13:04:00浏览次数:5  
标签:python 换位 个数 冒泡排序 num 排序 比较

1、什么是冒泡排序

    Bubble Sort 是最简单和通用的排序方法,基本思想是:在待排序的一组数据中,将相邻的两个数进行比较,若前面的数比后面的数大,就交换两个数,否则不交换;如此下去,直至完成最终排序。由此可得,在排序的过程中,大的数据往下沉,小的数据往上浮,就像气泡一样。于是将这种算法形象地称为冒泡排序

2、排序过程剖析

假设有n个数,对相邻的数比较需要进行n-1轮的排序。以Data1 = [3,7,6,5,9,2,8]为例

第1轮   比较n-1次即7-1=6次

3、7不换位  [3,7,6,5,9,2,8]

6、7换位      [3,6,7,5,9,2,8]

7、5换位      [3,6,5,7,9,2,8]

7、9不换位   [3,6,5,7,9,2,8]

9、2换位      [3,6,5,7,2,9,8]

9、8换位      [3,6,5,7,2,8,9]

至此,最大的数9已经换到最后一位,下一轮排序无需再比较最后1个数

第2轮   比较n-2次即7-2=5次

3、6不换位   [3,6,5,7,2,8,9]

6、5换位       [3,5,6,7,2,8,9]

6、7不换位   [3,5,6,7,2,8,9]

7、2换位      [3,5,6,2,7,8,9]

7、8不换位  [3,5,6,2,7,8,9]

 

至此,第二大的数8已经换到倒数第二位,下一轮排序无需再比较最后2个数

第3轮   比较n-3次即7-3=4次

3、5不换位  [3,5,6,2,7,8,9]

5、6不换位  [3,5,6,2,7,8,9]

6、2换位     [3,5,2,6,7,8,9]

6、7不换位  [3,5,2,6,7,8,9]

至此,第三大的数7已经换到倒数第三位,下一轮排序无需再比较最后3个数

第4轮   比较n-4次即7-4=3次

3、5不换位  [3,5,2,6,7,8,9]

5、2换位      [3,2,5,6,7,8,9]

5、6不换位  [3,2,5,6,7,8,9]

至此,第四大的数6已经换到倒数第四位,下一轮排序无需再比较最后4个数

第5轮   比较n-5次即7-5=2次

3、2换位     [2,3,5,6,7,8,9]

3、5不换位  [2,3,5,6,7,8,9]

至此,第五大的数5已经换到倒数第五位,下一轮排序无需再比较最后5个数

第6轮 比较1次

2、3不换位  [2,3,5,6,7,8,9]

至此,排序完毕

(第i轮  比较n-i次即7-i次)

3、用python实现冒泡排序

def Bubble_Sort(num):
'''

:param num: 需要排序的数组
:return: 排序结果
'''
n = len(num)
for i in range(n-1):
for j in range(n-1-i):
if num[j]>num[j+1]:
num[j],num[j+1] = num[j+1],num[j]
print("第{}次比较".format(j+1),num)
print("-------------第{}轮排序----------".format(i+1), num)
return num

 

标签:python,换位,个数,冒泡排序,num,排序,比较
From: https://www.cnblogs.com/chazi2020/p/18382318

相关文章

  • Python中configparser模块的基本用法
    configparser是Python标准库中的一个模块,用于处理配置文件。配置文件通常用于存储应用程序的配置信息,如数据库连接参数、日志级别设置等。configparser模块支持读取、写入和修改配置文件,这些文件通常采用类似INI格式的结构。配置文件格式配置文件一般以'.ini'作为扩展名......
  • Python开发之DOS攻击检测和防御
    文章目录==Python检测和防御DOS攻击==一、在CentOS上安装Python3二、理解各个命令的含义1、uptime2、netstat3、ss4、firewall-cmd5、sysctl三、利用python实现DOS入侵检测采集TCP连接数据采集跟DOS攻击关联度较高的数据uptimenetstat-ant连接数量ss-lnt读取队列情......
  • Python开发之DOS智能检测
    文章目录==故障上报与处理==1、设备状态信息2、性能参数3、网络连接信息4、智能预警故障上报与处理在一些简单的IIoT设备中,可能只包含一个或多个嵌入式系统,这些系统专门设计用于执行特定的任务,并且不包含传统意义上的操作系统。这些设备通常使用微控制器(MCU)或微处......
  • 【python3.8安装报错】lmportError: DLL load failed while importing ft2font: 找不
    客户需求背景:安装python3.8无法运行,报错lmportError:DLLloadfailedwhileimportingft2font:找不到指定的模块 考虑兼容性问题这个问题首先需要考虑的是是否是python版本太高了,因为python3.9不支持win7,而python3.8版本对win7的兼容性也有一定的限制。解决:首先考......
  • 四皇后问题Python实现
    四皇后问题是出自于国际象棋来提出的,众所周知,皇后(queen)在国际象棋中可以控制横竖以及斜线的棋子,那么四皇后的规则是什么呢,咱们废话不多说,直接进入它的规则。1.四皇后问题的规则四皇后问题其实就是把四个皇后放在一个四*四的棋盘上使这些皇后不被互相控制就像这样:那么怎么......
  • 基于OpenCV-Python实现人脸识别-----摄像头捕获人脸图像显示中文乱码问题
    基于OpenCV-Python实现人脸识别时,为了使图像上显示识别到人员的中文名字,做了几次尝试,使用PIL.Image和OpenCV图像格式相互转换解决:使用OpenCV将图片灰度化,对加载的灰度化图使用分类器中的detectMultiScale()函数查找目标人脸,并使用for循环实现矩形框和圆形框框住查找到的人脸。......
  • 4.Python操控Excel之格式
    1.设置字体斜体、加粗、颜色2.计算公式3.设置表格高度和宽度4.指定单元格合并5.取消指定单元格合并 ......
  • PyJWT 和 python-jose 在处理JWT令牌处理的时候的差异和具体使用
    PyJWT和python-jose是两个用于处理JSONWebTokens(JWT)的Python库。它们都有助于生成、解码、验证和管理JWT,但它们在功能范围和设计哲学上有一些重要的区别。本篇介绍它们之间的一些差异,以及在项目中使用FastAPI+ python-jose 来处理访问令牌的生成以及一些例子代码供......
  • Python - Anti-Patterns
    Thesearecommonprogrammingpractices that,whilenotnecessarilywrong,oftenleadtolessefficient,lessreadable,andlessmaintainablecode. Byunderstandingthesepitfalls,youcanwritecleaner,moreefficientcodeforyourPythonapplications. ......
  • PEP 508:为不同版本Python指定不同依赖
    问题背景有些常用的第三方包,在Python中支持的版本是不一致的。例如常用的numpy,在Python3.7中仅支持到1.21版本,其他Python版本可以支持到1.22版本以上,甚至现在的2.0版本以上。有一个问题是,在有些Cython的使用场景中,numpy==1.22的版本有可能出现报错ImportError:numpy.core.multia......