当前位置: 首页 > article >正文

Python从入门到高手7.5节-实现冒泡排序算法

目录

7.5.1 排序算法简介

7.5.2 冒泡排序算法原理

7.5.3 冒泡排序算法实现

7.5.4 永不放弃


7.5.1 排序算法简介

所谓排序,是指将数据集合中的元素按从小到大的顺序进行排列,或按从大到小的顺序进行排列。

前者称为升序排序,后者称为降序排序。

在数据结构与算法这门课程中,我们会学习到诸多与排序相关的算法,比如冒泡排序算法,选择排序算法,快速排序算法,堆排序算法等。在本节教程中,我们来掌握非常经典的冒泡排序算法。

7.5.2 冒泡排序算法原理

冒泡排序算法的原理很简单,相邻元素两两间进行比较,按照升序或降序的关系互换位置。

比如在升序排序中,将大的气泡放在后面,小的放在前面。

n个元素两两之间进行比较,只需比较n-1次,即可找出最值。找出最值后,最值自动冒泡到区间的尾部,然后再进行下一趟的比较。下图所示为将降序排列的[3,2,1]列表使用冒泡排序排成升序:

image.png

7.5.3 冒泡排序算法实现

根据冒泡排序的算法原理,我们现在用Python语言来实现冒泡排序算法:

"""
@author: 大神薯条老师
@desc: 实现冒泡排序算法
"""

numbers = [3, 2, 1]
n = len(numbers)

# n个元素一共需要比较n-1趟
for outer_index in range(n-1):
    # outer_index用来表示已经冒泡到尾部的气泡
    # n个元素需比较n-1次才能找出最大或最小的值,所以是n-1
    # 下一趟需在上一趟的基础上再两两间进行比较,所以得再减去outer_index
    for inner_index in range(n-1-outer_index):
        if numbers[inner_index] > numbers[inner_index+1]:
            # 如果当前气泡大于后面的气泡,就互换位置
            numbers[inner_index],  numbers[inner_index+1] = \
                numbers[inner_index+1],  numbers[inner_index]

                            
# 执行print来输出升序排序后的列表
print(numbers)

7.5.4 永不放弃

跟薯条老师学后端开发,高级爬虫(JS逆向+安卓逆向),数据分析,大数据开发,量化交易,以及机器学习+深度学习算法。坚定自己的学习目标,保持学习的热情,那你成为高手只是时间问题。

薯条老师的学生在南方电网,林氏家居,京东,阿里等大厂。想系统学习Python和Java的同学,可以移步薯条老师的个人技术博客:薯条老师的个人技术博客http://www.chipscoco.com/ 对本节教程有任何不懂的同学,亦可在评论区中进行评论。薯条老师会详细解答你们提出的每一个问题。


http://www.kler.cn/a/382278.html

相关文章:

  • 【IEEE出版】第六届国际科技创新学术交流大会暨信息技术与计算机应用学术会议(ITCA 2024,12月06-08)
  • P06_三数之和
  • PCL 点云配准 精度评价指标均方根误差(RMSE)
  • 查看网路信息-ifconfig命令
  • Windows安装多个NodeJS版本
  • K8S flannel网络模式对比
  • JUC笔记之ReentrantLock
  • 基础 IO(文件系统 inode 软硬链接)-- 详解
  • 从SSL到TLS——互联网传输的护卫军
  • 程序中怎样用最简单方法实现写excel文档
  • Dubbo详解及其应用
  • SpringBoot在线教育系统:微服务架构
  • EPSON机械手与第三方相机的校准功能设计By python
  • 高亚科技签约酸动力,助力研发管理数字化升级
  • 【制造业&仓库】流水线能源设备检测系统源码&数据集全套:改进yolo11-DCNV2-Dynamic
  • 【Golang】Golang的Map的线程安全问题
  • 01 Oracle 数据库存储结构深度解析:从数据文件到性能优化的全链路探究
  • 【论文速看】DL最新进展20241106-图像分类、图像分割、时间序列预测
  • 【p2p、分布式,区块链笔记 Torrent】WebTorrent的add和seed函数
  • 数字后端零基础入门系列 | Innovus零基础LAB学习Day8
  • 【vue-pdf】简单封装pdf预览组件
  • Linux信号_信号的保存
  • 应用层知识点总结2
  • 华为海思招聘-芯片与器件设计工程师-模拟芯片方向- 机试题-真题套题题目——共8套(每套四十题)
  • 一文了解CANFD基础
  • 5种AI合同审查方法,免费开源,提升50%法律文件比对效率