news 2026/5/8 10:04:10

排序(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/5/6 3:23:20

专科生收藏!全网顶尖的降AI率平台 —— 千笔·专业降AIGC智能体

在AI技术深度渗透学术写作的当下&#xff0c;越来越多的学生和研究者开始依赖AI工具提升写作效率。然而&#xff0c;随着知网、维普、万方等查重系统不断升级算法&#xff0c;以及Turnitin对AIGC内容的识别愈发严格&#xff0c;AI率超标问题日益凸显&#xff0c;成为论文通过审…

作者头像 李华
网站建设 2026/5/1 7:14:49

ArcGIS应用教学——土地利用现状图制作与面积统计

一、认识数据和软件界面在开始动手制作地图之前&#xff0c;我们首先要搞清楚两件事&#xff1a;我们要处理什么样的数据&#xff0c;以及我们要使用的工具——ArcGIS软件长什么样。PS:例子数据在地球资源数据云平台中免费下载以本网站的2022年吉林省1000米分辨率土地利用遥感监…

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

国际法规更新:2026年测试数据管理必知要点

一、法规风暴&#xff1a;全球合规版图的重构 2026年&#xff0c;数据隐私与AI监管进入强约束时代。中国《网络数据安全管理条例》与修订版《个人信息保护法》&#xff08;PIPL&#xff09;构成监管基石&#xff0c;要求测试数据全生命周期合规。欧盟GDPR升级版将算法偏见检测…

作者头像 李华
网站建设 2026/4/26 20:30:42

深度解读CCPA:加州隐私法对测试脚本的影响

随着数据隐私法规的日益严格&#xff0c;《加州消费者隐私法案》(CCPA)已成为全球软件测试领域的焦点。该法案赋予消费者知情权、访问权、删除权和拒绝数据出售权&#xff0c;对测试脚本的编写、执行和验证提出了全新挑战。 一、CCPA核心条款及其对测试脚本的挑战 CCPA于2020年…

作者头像 李华
网站建设 2026/5/2 9:24:46

写作小白救星!抢手爆款的降AI率软件 —— 千笔·专业降AIGC智能体

在AI技术迅速渗透学术写作领域的今天&#xff0c;越来越多的学生开始依赖AI工具辅助完成论文、报告等学术材料。然而&#xff0c;随之而来的“AI率超标”问题也日益凸显——随着知网、维普、万方等查重系统不断升级算法&#xff0c;以及Turnitin对AIGC&#xff08;人工智能生成…

作者头像 李华
网站建设 2026/5/6 7:44:31

plutofilter 是什么?开源图像滤镜库服务器搭建指南

在做图像处理相关项目时&#xff0c;很多开发者都会遇到一个共通的问题&#xff1a; 想加滤镜很容易&#xff0c;但性能和集成成本却不一定好控制。尤其是在这些场景中&#xff1a;Web 图片处理服务图像预处理与增强视频帧滤镜处理AI 训练前的数据处理如果滤镜库太重、依赖太多…

作者头像 李华