news 2026/4/23 11:37:21

排序(2)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
排序(2)

先赞后看,养成习惯!!! ^ _ ^ ❤️ ❤️ ❤️
码字不易,大家的支持就是我坚持下去的动力,点赞后不要忘记关注我哦

个人主页:伯明翰java
文章专栏:数据结构和算法
如有错误,请您指正批评 ^ _ ^

书接上文

交换排序

基本思想:所谓交换,就是根据序列中两个记录键值的⽐较结果来对换这两个记录在序列中的位置,
交换排序的特点是:将键值较⼤的记录向序列的尾部移动,键值较⼩的记录向序列的前部移动。

冒泡排序

/** * 冒泡排序 * 时间复杂度O(n^2) * 稳定排序 * 空间复杂度O(1) * @param array */publicstaticvoidbubbleSort(int[]array){intleft=0;intright=array.length-1;while(left<right){intminIndex=left;intmaxIndex=left;for(inti=left+1;i<=right;i++){if(array[i]<array[minIndex]){minIndex=i;}if(array[i]>array[maxIndex]){maxIndex=i;}}seap(array,minIndex,left);if(maxIndex==left){maxIndex=minIndex;}seap(array,maxIndex,right);left++;right--;}}

特点:

  1. 冒泡排序是⼀种⾮常容易理解的排序
  2. 时间复杂度:O(N^2)
  3. 空间复杂度:O(1)
  4. 空间复杂度:O(1)

快速排序

快速排序是Hoare于1962年提出的⼀种⼆叉树结构的交换排序⽅法,其基本思想为:任取待排序元素
序列中的某元素作为基准值,按照该排序码将待排序集合分割成两⼦序列,左⼦序列中所有元素均⼩
于基准值,右⼦序列中所有元素均⼤于基准值,然后最左右⼦序列重复该过程,直到所有元素都排列
在相应位置上为⽌。

/** * 时间复杂度O(nlogn) * 快速排序 不稳定排序 * 空间复杂度O(logn) * @param array */publicstaticvoidquickSort(int[]array){quick(array,0,array.length-1);}publicstaticvoidquick(int[]array,intleft,intright){if(left>=right){return;}intpivot=partition(array,left,right);quick(array,left,pivot-1);quick(array,pivot+1,right);}privatestaticintpartition(int[]array,intleft,intright){inttmp=array[left];while(left<right){while(left<right&&array[right]>=tmp){right--;}array[left]=array[right];while(left<right&&array[left]<=tmp){left++;}array[right]=array[left];}array[left]=tmp;returnleft;}

特点:

  1. 快速排序整体的综合性能和使⽤场景都是⽐较好的,所以才敢叫快速排序
  2. 空间复杂度:O(logN)
  3. 时间复杂度:O(N*logN)
  4. 稳定性:不稳定

归并排序

归并排序(MERGE-SORT)是建⽴在归并操作上的⼀种有效的排序算法,该算法是采⽤分治法(Divideand Conquer)的⼀个⾮常典型的应⽤。将已有序的⼦序列合并,得到完全有序的序列;即先使每个⼦序列有序,再使⼦序列段间有序。若将两个有序表合并成⼀个有序表,称为⼆路归并。 归并排序核⼼步骤:

特点:

  1. 归并的缺点在于需要O(N)的空间复杂度,归并排序的思考更多的是解决在磁盘中的外排序问题。
  2. 时间复杂度:O(N*logN)
  3. 空间复杂度:O(N)
  4. 稳定性:稳定

排序算法复杂度及稳定性分析


版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/20 6:58:14

从此告别拖延! 降AIGC工具 千笔AI VS 云笔AI,本科生专属

在AI技术迅速发展的今天&#xff0c;越来越多的本科生开始借助AI工具辅助论文写作&#xff0c;以提高效率、拓展思路。然而&#xff0c;随着学术审核标准的不断升级&#xff0c;AI生成内容的痕迹愈发明显&#xff0c;查重率和AIGC率问题成为许多学生面临的“隐形炸弹”。面对市…

作者头像 李华
网站建设 2026/4/23 10:49:11

不踩雷!王者级的AI论文平台 —— 千笔·专业学术智能体

你是否曾为论文选题发愁&#xff0c;面对空白文档无从下笔&#xff1f;是否在反复修改中感到力不从心&#xff0c;却始终无法达到理想效果&#xff1f;论文写作不仅考验学术能力&#xff0c;更是一场与时间的赛跑。而今&#xff0c;一款专为学生量身打造的AI论文平台——千笔AI…

作者头像 李华
网站建设 2026/4/17 23:34:11

Windows平台 Anaconda 下载与安装全指南:从入门到环境配置

背景介绍Anaconda 是目前全球最受欢迎的 Python 数据科学发行版。它不仅预装了 Python 解释器&#xff0c;还集成了 Conda 包管理器以及 NumPy、Pandas、Matplotlib 等数百个常用的科学计算库。对于初学者而言&#xff0c;Anaconda 能够一站式解决 Python 环境配置的痛点&#…

作者头像 李华
网站建设 2026/4/18 11:52:44

Windows系统QGIS软件下载与安装

QGIS 项目始于 2002 年&#xff0c;作为一种从PostGIS&#xff08;也是一种开源软件&#xff0c;它为 PostgreSQL 添加了地理支持&#xff09;启用数据库导入和查看数据的方式。QGIS 现在是领先的开放源代码 GIS 软件包。 本文是 QGIS 的快速入门指南&#xff1b;它以LTR3.4版本…

作者头像 李华
网站建设 2026/4/17 18:38:02

AUTOSAR如何实现CAN信号的安全传输(例如HMAC校验)?

AUTOSAR&#xff08;汽车开放系统架构&#xff09;这套体系中&#xff0c;CAN&#xff08;控制器局域网&#xff09;作为汽车通信的骨干协议&#xff0c;几乎无处不在&#xff0c;从引擎控制到刹车系统&#xff0c;CAN承载着大量关键数据的传输。然而&#xff0c;CAN协议本身设…

作者头像 李华
网站建设 2026/4/23 9:32:37

使用stm32CubeProgrammer连续升级程序

目前为了批量升级方便&#xff0c;初步整理了一个快速升级stm32程序的方法&#xff08;虽然还不是很快&#xff0c;但作为第一版记录一下&#xff09;1. 安装SetupSTM32CubeProgrammer-1.3.0.exe2.根据自己的环境配置路径3.点击 连刷.bat 开始自动刷机

作者头像 李华