分享好友 最新动态首页 最新动态分类 切换频道
arraylist排序_面试必会排序算法(1)java 实现冒泡排序讲解
2024-12-27 05:02

最近想系统整理一下数据库的索引系列,然后就牵扯到了二分查找,二分查找的前提需要排序。

排序工作中我们用的很多,不过很少去关心实现;面试中,排序的出场率非常高,以此来验证大家是否懂得“算法”。

无论如何,排序算法都值得每一位极客去学习和掌握。

冒泡排序(英语:Bubble Sort)又称为泡式排序,是一种简单的排序算法。

它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。

冒泡排序对 n 个项目需要 O(n^2) 的比较次数,且可以原地排序。

尽管这个算法是最简单了解和实现的排序算法之一,但它对于包含大量的元素的数列排序是很没有效率的。

冒泡排序算法的运作如下

  1. 比较相邻的元素。如果第一个比第二个大,就交换他们两个。
  2. 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,最后的元素会是最大的数。
  3. 针对所有的元素重复以上的步骤,除了最后一个。
  4. 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

由于它的简洁,冒泡排序通常被用来对于程序设计入门的学生介绍算法的概念。

冒泡排序的文章和实现在网上有很多,讲解的也很详细。

此处只补充一下自己觉得不足的地方

(1)大部分实现都只是一个 int 比较的例子,实用性不强。

(2)没有统一的接口,不便于后期的统一拓展和自适应。(根据不同的数量,选择不同的算法)

(3)没有自适应性的日志输出,不便于学习。

基于上面 3 点,我们做一点小小的改进。

第一步:统一定义一个排序的接口。

为了便于后期拓展,统一实现一个抽象父类

这里很简单,针对空列表,或者大小为1的列表,无需进行排序。

接下来我们实现以下冒泡排序即可

有几点需要说明下

(1)这里是对 Comparable 对象的支持,本质上和常见的 int 比较一样,这样的适用范围更加广泛一些。

(2)这里是基于 java 的 list 进行排序,因为个人认为 list 的出场率是高于数组的,当然大家如果想实现数组版本的,也是类似的。

(3)changeFlag 也就是我们常说的针对冒泡排序的优化,如果没有变更,说明排序完成,可以直接返回了。

为了让这个实现类使用起来更加方便,我们就模仿一下 jdk 中的方法。提供一个工具类

我们来验证一下排序算法。

其中 RandomUtil 是一个随机生成的工具,便于我们测试,实现如下

为了便于理解,我们可以在排序实现中加一点日志

i,j 代表本次循环的 i,j; c 代表当前值,n 代表 next 下一个值。

测试日志如下

这个算法,是把小的值放在前面,所以只有当 c > n 的时候,才会发生排序。

最后 i = 6, j = 2 的时候,已经排序完成。

为了便于大家学习,上面的排序已经开源,开源地址

https://github.com/houbb/sort

欢迎大家 fork/star,鼓励一下作者~~

希望本文对你有帮助,如果有其他想法的话,也可以评论区和大家分享哦。

最新文章
谷歌SEO优化,如何助力我的Authority Site提升?
在当今互联网信息爆炸的时代,拥有一个高权威性的网站(Authority Site)是每个网站运营者的梦想。这不仅意味着更高的流量,更优质的用户,还意味着更多的商业机会。作为一名在SEO领域摸爬滚打多年的从业者,我深知谷歌SEO优化对于提升Auth
通过阅读《手机断舍离》,我们可以学会如何找回那些被手机夺走的时间和注意力。我们可以重新发现生活中的美好和纯粹的快乐。这是一次自我救赎的实践,也是对现代生活的深刻反思。
飞屏无法连接电脑版(飞屏无法连接电脑版网络)
好酷屋教程网小编为您收集和整理了飞屏无法连接电脑版(飞屏无法连接电脑版网络)的相关教程:飞屏无法连接电脑版网络先打开歪飞开关  点击右下角无线网络连接的图标或者点击左下角开始-设置-网络连接-双击无线网络连接-查看无线网络  在
短视频平台源码,短视频软件开发,短视频app源码搭建
一、短视频平台源码的功能1、短视频功能:短视频是短视频平台源码的主要功能,用户可以发布、编辑、观看短视频。2、直播功能:短视频软件开发实现直播功能,主播可以带货、连麦、进行PK。3、聊天功能:短视频app源码支持用户聊天,方便用户
金东一医生-哈尔滨市金东一医生产阴道紧致手术价格及案例口碑深解析
作为哈尔滨市产阴道紧致手术好的医生,金东一医生产阴道紧致手术精细、效果良好,引得哈尔滨市整友纷纷关注,大家想知道金东一产阴道紧致手术价位多少钱?金东一医生产阴道紧致手术贵不贵?金东一产阴道紧致手术收费价位合理,快来看看。下
自治区农业农村厅办公室关于印发2024年基层农业技术推广服务能力提升项目实施方案的通知(桂农厅办发〔2024〕10号)
各市、县(区)农业农村局,自治区蚕业技术推广站:为保证基层农业技术推广服务能力提升项目顺利实施,进一步激发各地农科院(所)改革创新活力,提升科研推广服务能力,推动现代特色农业高质量发展,现将《2024年基层农业技术推广服务能力
奔驰EQE AMG怎么样 内外兼修
主流车尺寸适中,能够很好的满足各方面需求,同时主流车的价格也比较合理,所以买它就对了!如今消费者买车首先就是要看这款车配置丰不丰富,对于自然也不例外。赶紧来看看它吧。先看下奔驰EQE AMG的外观,奔驰EQE AMG前脸整体看上去较为精
百度手机卫士 app下载v9.26.12
《百度手机卫士app》一款非常好用的手机软件,这一款是百度手机软件的精简版,这一版保留了核心功能删除了多种没有必要的功能和广告,减小了体积。喜欢的朋友可以来下载一下。有趣的手机软件好用的安卓软件手机安全软件下载从心出发,5.54M
相关文章
推荐文章
发表评论
0评