Java冒泡排序算法以及算法优化,这篇足矣……

前言

作为Java程序员,简单的算法,必须要掌握的。尤其初级开发人员在面试过程或者笔试都会有相应算法题,今天我们讲解冒泡排序算法是如何实现的以及优化方法。

何为冒泡排序

冒泡排序的基本思路:通过对待排序系列从前向后,依次比较相邻元素的值,若发现逆序就交换,意思就是使较大的元素从前向后移,好比水低下的气泡一样逐渐向上冒泡,一个道理的。
在这里插入图片描述

冒泡排序优缺点

优点:比较简单、空间复杂度较低、是稳定的一种排序。
缺点:时间复杂度太高、效率比较慢、一轮比较都需要换位置,所以效率不高,假如现在一个数组里面有N个数,那么排序完成需要比较N*(N-1)/2次。

冒泡排序规则

每一趟排序的次数在逐渐减少的
总的进行数组的大小减1次大的循环
每一趟比较完都会有最大值出现
冒泡排序实现代码如下图

冒泡排序的优化

冒泡优化就是说,如果我们发现在排序过程中,没有发生一次交换,我们可以让它提前结束,这就是优化。当我们在排序过程,大家都知道,各元素是不断接近自己的位置的,但是有时候排序并不是需要换位置,本身就是有顺序的,这时我们在排序过程中设置一个标标记flag判断一下元素是否进行交换(标记flag自己定义),这样大大减少必要的比较。代码如下图:
在这里插入图片描述

总结冒泡排序核心思想

冒泡排序的比较相邻的元素的,第一个比第二个大就要交换他们两个的位置。
冒泡排序对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,每次排序结束都会有最大值出现。
冒泡排序是持续每次对越来越少的元素重复上一步的步骤的,直到最后一轮没有比较数字就结束。
冒泡排序是一个经典的排序算法,值得大家掌握,平时小的笔试都会出现。

我是从事大数据、Java后端开发的,如果你也是正在考虑学习或者这学习中遇到什么问题,可以评论区留言或者私信,感兴趣的朋友可以关注我,后续会更新关于大数据、Java开发的技术文章。

猜你喜欢

转载自blog.csdn.net/realize_dream/article/details/105890581
今日推荐