news 2026/5/1 6:13:52

排序(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/1 6:13:50

本科生必看!全网顶尖的AI论文平台 —— 千笔·专业论文写作工具

你是否曾为论文选题发愁&#xff0c;反复修改却总对结果不满意&#xff1f;是否在查重和格式上花费大量时间却收效甚微&#xff1f;面对繁重的学术任务&#xff0c;很多同学都感到力不从心。而如今&#xff0c;一款专为学生打造的AI论文写作工具——千笔AI&#xff0c;正悄然改…

作者头像 李华
网站建设 2026/5/1 6:04:05

从零开始学Flink:Flink SQL 极简入门

Flink SQL 是 Apache Flink 的核心模块之一&#xff0c;它让开发者可以使用标准的 SQL 语法来编写流处理和批处理作业。对于不想深究 Java/Scala 复杂 API 的“小白”来说&#xff0c;Flink SQL 是进入实时计算领域的最佳敲门砖。 本文将基于 Flink 1.20.1 版本&#xff0c;手把…

作者头像 李华
网站建设 2026/5/1 6:11:07

企业年会大屏投票小程序:亲测好用案例分享

技术痛点引入公司企业年会大屏扫码实时节目投票小程序的数据同步与用户体验优化是当前行业普遍面临的难题。解决方案定位熹乐互动针对这一问题提供了专业解决方案&#xff0c;通过其先进的技术手段和丰富的实践经验&#xff0c;显著提升了系统的稳定性和用户满意度。技术详解该…

作者头像 李华
网站建设 2026/4/17 19:14:52

AUTOSAR中安全事件(Security Event)的采集与上报机制?

随着车联网和智能驾驶技术的迅猛发展&#xff0c;汽车不再是单纯的机械设备&#xff0c;而是变成了一个高度互联的智能终端。这种转变在带来便利的同时&#xff0c;也让汽车信息安全问题变得异常突出。黑客攻击、数据泄露、甚至远程控制车辆的可能性&#xff0c;已经从科幻电影…

作者头像 李华
网站建设 2026/5/1 6:12:58

在root下升级Node.js到22+

在root下升级Node.js到22 使用NodeSource安装Node.js 22 1. 卸载现有Node.js&#xff08;可选&#xff09; apt-get remove -y nodejs npm 2. 清理残留 apt-get autoremove -y 3. 添加NodeSource仓库 curl -fsSL https://deb.nodesource.com/setup_22.x | bash - 4. 安装Node.j…

作者头像 李华