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

8.3.1_冒泡排序

知识总览:

冒泡排序:

概念:

从后往前(或从前往后)两两比较相邻元素的值,若为逆序(A[i-1]>A[i]),则交换它们,直到序列比较完,称这样过程为一趟冒泡排序......抄的视频上讲解

 

从后往前冒泡(每次都排序值最小的元素)算法实现:

交换2个值a、b:添加一个中间变量temp,先把a的值给temp,再把b的值给a,再把temp的值给b,交换成功,形成一个环

变量i:i所指位置之前的元素是已经排好序的不用再交换的,每交换一趟i+1,因为双层for循环中有j>i即不会再交换i位置之前的元素位置

变量j:j=元素个数-1即数组中的最后一个元素位置,数组倒序交换排序

变量j-1:即数组中的最后一个元素位置,用来比较index=j和index=j-1位置上的元素的值大小,如果[j-1] >A[j]交换位置,如果A[j-1] =A[j]不改变位置用来保持算法的稳定性,如果A[j-1]<A[j]位置不变

flag变量:用来记录本趟排序是否有交换动作发生,如果没有证明顺序已经排好,结束排序

 

算法性能分析:

空间复杂度O(1):因为只需定义几个辅助变量使用常数级的空间就可以实现算法(视频上这么说的)

最好情况(有序):只需进行1趟冒泡,有n个元素需要比较n-1次(两两比较),交换0次,时间复杂度O(n)

最坏情况(逆序):第1趟冒泡,有n个元素需要比较n-1次(两两比较),交换n-1次

                            第2趟冒泡,有n个元素需要比较n-2次(两两比较,但是因为第一个元素已经排好序了,不用再比较了),交换n-2次

                            第3趟冒泡,有n个元素需要比较n-3次(两两比较,但是因为前2个元素已经排好序了,不用再比较了,即只需两两比较n-2个元素,需要比较n-3次),交换n-3次

。。。。。。。

所有趟的交换次数总和为n(n-1)/2=比较次数即最坏时间复杂度O(n²)

冒泡排序平均时间复杂度为O(n²)

注意:每交换一次,元素要移动3次,如下图a和b的交换,a要移到temp,b要移到a,temp要移到b,在最坏的情况下,交换次数==比较次数!=元素移动次数

冒泡排序是稳定的

冒泡排序是否用于链表:

可以。从链头元素开始,如果链头元素比后边元素大,就链头元素和后边元素交换,如果不大不动,

 从前往后冒泡(每次都排序值最大的元素):

即第一趟先把大的元素放在最后,第2趟放第2大的元素。。。。。。

知识回顾:

 

。。。。。。。。。。。。 

 水水水水水水

相关文章:

  • AI的发展过程:深度学习中的自然语言处理(NLP);大语言模型(LLM)详解;Transformer 模型结构详解;大模型三要素:T-P-G 原则
  • 《HarmonyOSNext弹窗:ComponentContent动态玩转企业级弹窗》
  • 告别excel:AI 驱动的数据分析指南
  • CentOS7自带的yum依然无法联网到官方源
  • 【C/C++】怎样设计一个合理的函数
  • 相机--单目相机
  • 7. 整数反转
  • Linux 内核 Slab 分配器核心组件详解
  • 基于51单片机和8X8点阵屏、独立按键的跳跃躲闪类小游戏
  • 如何在同一台电脑上安装并运行多个版本的 IntelliJ IDEA
  • xilinx的GT配置说明(一)
  • 【考研数学:高数6】一元函数微分学的应用(二)——中值定理、微分等式和微分不等式
  • AT2659低噪声放大器芯片
  • [KCTF]rev_babyrev
  • 永磁同步电机控制算法--抗饱和PI
  • C#winform画图代码记录
  • 基于地形数据计算山体阴影
  • YOLO-FireAD:通过混合注意力与双池化融合实现高精度实时火灾检测
  • 专题:2025中国游戏科技发展白皮书报告汇总解读|附130+份报告PDF汇总下载
  • Java中的设计模式:23种经典模式在实际项目中的应用案例
  • 如何做网站么/百度个人中心登录
  • 讯响模板网站/外链下载
  • 微信网站设计运营/上海seo公司哪家好
  • 网站加友情链接的好处/推广自己产品的文案
  • 网站开发java 开源/抖音seo搜索引擎优化
  • 哪些网站做家政推广/网络营销的优势和劣势