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

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大的元素。。。。。。

知识回顾:

 

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

 水水水水水水

http://www.xdnf.cn/news/13332.html

相关文章:

  • 支持向量机:在混沌中划出最强边界
  • OPenCV CUDA模块立体匹配------对立体匹配生成的视差图进行双边滤波处理类cv::cuda::DisparityBilateralFilter
  • vllm docker-compose 运行LLM-Research/Mistral-7B-Instruct-v0.3
  • Linux 杀进程指令详解:`kill -9 PID` 和 `kill -15 PID` 有什么区别?
  • 服务器上传或者下载在中间断网后继续上传方法
  • 【软考中级】软件设计师考试大纲
  • 新闻类鸿蒙应用功耗危机以及优化方案
  • Java反射完全指南
  • 高频面试之5Kafka
  • Mac 上使用 mysql -u root -p 命令,出现“zsh: command not found: mysql“?如何解决
  • 机器人教学和实践的可编程智能仿生机器人平台——智能六足机器人
  • 【Java开发】Spring 事务开发完全指南:从入门到精通
  • MySQL中触发器详解 触发器在自动化任务中的应用场景
  • 第27节 Node.js Buffer
  • 【编译工具】(自动化)AI 赋能的自动化测试工具:如何让测试效率提升 500% 并实现智能质检?
  • UML用例分析与用例规约表:以聊天室软件为例
  • Odoo 17 在线聊天报错 “Couldn‘t bind the websocket...“ 的解决方案
  • gitHub hexo 个人博客升级版
  • springboot + nacos + k8s 优雅停机
  • Go 通道(Channel)入门与基础使用
  • P2842 纸币问题 1
  • SpringBoot + 自建GitLab + Jenkins + CentOS Stream 9 来实现自动化部署
  • 商品中心—3.商品可采可补可售的技术文档上
  • Mybatis辅助配置-配置SQL提示
  • 2024 CKS题库+详尽解析| 1. kube-bench 修复不安全项
  • 提取 Word 中图片原始质量
  • 浅谈HDFS--基本操作
  • 进程信号之signal系统调用
  • 【编译工具】(自动化)自动化测试工具:如何让我的开发效率提升300%并保证代码质量?
  • UniApp APP打包方法(Android/iOS双平台)