通俗解释选择、插入和冒泡排序

news/2024/10/15 9:14:35/

1. 选择排序(Selection Sort)

选择排序的过程就像我们选最小(或最大)的东西一样。它的操作逻辑是不断从未排序的部分中选出一个最小(或最大)的数,放到前面的已排序部分。想象一下,你有一堆扑克牌,想从小到大排列,每次你都从剩下的牌里选出最小的,放到前面。

步骤:

  • 首先,找到数组中最小的那个数,把它放到第一个位置。
  • 接着,忽略第一个数,再从剩下的数里找出最小的,把它放到第二个位置。
  • 依次类推,直到所有的数都放到了它应该的位置。

举个例子:
排序数组 [3, 1, 4, 5, 2]

  • 第一次:找到最小的 1,跟第一个数 3 交换,得到 [1, 3, 4, 5, 2]
  • 第二次:在剩下的 [3, 4, 5, 2] 里找到 2,交换到第二位,得到 [1, 2, 4, 5, 3]
  • 继续操作,直到数组有序。

2. 插入排序(Insertion Sort)

插入排序就像我们整理手里的扑克牌一样。每次拿一张新牌,都要把它插入到手里已经排好的牌中正确的位置。这个过程从小规模的已经排好的部分开始,逐渐扩大到整个数组。

步骤:

  • 从第二个数开始,跟前面排好的数比较,找到它应该插入的位置,把它插进去。
  • 每插入一个数,前面的部分就一直保持有序。
  • 继续处理后面的数,直到所有的数都插入到正确位置。

举个例子:
排序数组 [3, 1, 4, 5, 2]

  • 第一步:13 比较,插入到 3 的前面,得到 [1, 3, 4, 5, 2]
  • 第二步:4 已经比 3 大,不动,继续处理下一步。
  • 第三步:5 也不用动,处理下一步。
  • 第四步:2 和前面数依次比较,插入到 13 之间,得到 [1, 2, 3, 4, 5]

3. 冒泡排序(Bubble Sort)

冒泡排序的名字很形象,想象气泡从水底浮到水面。每次比较两个相邻的数,如果它们的顺序错了,就交换位置,把较大的数"冒"到后面。经过一次遍历,最大的数会被冒到最后一个位置。这样重复操作,直到所有数都排好。

步骤:

  • 从头开始,依次比较每对相邻的数,较大的往后移动。
  • 完成一轮比较后,最后一个数是最大的。
  • 再从头开始,对前面的数重复这个过程,每次让一个数冒到它正确的位置。
  • 直到没有数需要交换。

举个例子:
排序数组 [3, 1, 4, 5, 2]

  • 第一次:31 比较,交换,得到 [1, 3, 4, 5, 2];接着 45 不动;最后 52 交换,得到 [1, 3, 4, 2, 5]
  • 第二次:再来一遍,32 交换,得到 [1, 2, 3, 4, 5]
  • 数组已经排好序了。

总结:

  • 选择排序:每次选择最小的放到前面。
  • 插入排序:像整理扑克牌一样,每次把新牌插入到已排好的部分。
  • 冒泡排序:两两比较,把大的数“冒”到后面。

这三种排序算法都属于简单排序算法,适合小规模数据的排序。它们的时间复杂度都是 (O(n^2)),随着数据量的增加,效率会降低。


http://www.ppmy.cn/news/1539366.html

相关文章

【Vue】鼠标滚轮横向滚动操作设计

需求&#xff1a; 鼠标滑轮滚动&#xff0c;操作横向滚动条 解决&#xff1a; 监控滚动操作&#xff0c;根据滚动偏移量&#xff0c;修改横向滚动条的位置 <template><div class"image_view"><div class"image_content"><divv-fo…

windows主机重新安装zabbix agent提示please clear the previous agent registration

目录 1. Zabbix Agent1.1 错误提示 2. 解决方法2.1 管理员运行cmd2.2 可以正常安装 1. Zabbix Agent 1.1 错误提示 2. 解决方法 2.1 管理员运行cmd 输入 sc.exe delete “Zabbix Agent” 或者 sc.exe delete “Zabbix Agent 2” 如果成功会出现“[SC] DeleteService SUCCES…

蓝桥杯备赛(c/c++)

排序 9. 实现选择排序 10. 实现插入排序 11. 实现快速排序 12. 实现归并排序 13. 实现基数排序 14. 合并排序数组

STM32-----I2C

1.基本原理&#xff1a; 上图是I2C的总线图和通讯协议图&#xff08;就是I2C是怎么实现设备之间读写数据的&#xff09; 下面主要介绍通讯协议的每一步&#xff1a; 1.发出开始信号: 一开始都为高电平为空闲状态。当SCL为高电平时&#xff0c;主机将SDA拉低即为发出开始信号&…

ceph基础

ceph基础搭建 存储基础 传统的存储类型: DAS设备:SAS,SATA,SCSI,IDW,USB 无论是那种接口,都是存储设备驱动下的磁盘设备,而磁盘设备其实就是一种存储是直接接入到主板总线上去的。直连存储。 NAS设备:NFS CIFS FTP 几乎所有的网络存储设备基本上都是以文件系统样式进行使…

科研绘图系列:R语言绘制中国地理地图

文章目录 介绍加载R包导入数据图a图b图c图d系统信息介绍 文章提供了绘制图a,图b和图d的数据和代码。该图展示了不同省份的物种分布情况。 加载R包 library(geojsonsf) library(sf) library(ggplot2) library(RColorBrewer) library(ggspatial) library(</

“DataOps+大模型”——数造科技在大模型时代的数据开发创新探索

写在前面 自《“数据要素x”三年行动计划》印发以来&#xff0c;各界积极投身于探索数据开发的新技术、新应用场景和新模式&#xff0c;力求通过挖掘数据要素的价值来推动新型生产力的蓬勃发展。在这个过程中&#xff0c;以大模型为核心的人工智能技术为数据开发工作带来了全新…

Android Studio简易项目|随机选择器(类似转盘)

一、背景 为了强化对flowlayout流式布局的理解和简易安卓项目架构结构的理解&#xff0c;写一个小项目&#xff0c;随机选择器&#xff0c;控制可见等 二、项目代码 2.1流式布局 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns…