🚀个人主页:欢迎访问Ali.s的首页
⏰ 最近更新:2022年8月12日
⛽ Java框架学习系列:【Spring】【SpringMVC】【Mybatis】
🔥 Java项目实战系列:【飞机大战】【图书管理系统】
🍭 Java算法21天系列:【查找】【排序】【递归】
⛳ Java基础学习系列:【继承】【封装】【多态】
🏆 通信仿真学习系列:【硬件】【通信】【MATLAB】
🍄 个人简介:通信工程本硕🌈、Java程序员🚴。目前只会CURD😂
💌 点赞 👍 收藏 💗留言 💬 都是我最大的动力💯
活动地址:CSDN21天学习挑战赛
冒泡排序(Bubble Sort),是一种较简单的排序算法。它重复地走遍历要排序的元素列,依次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。遍历元素的工作是重复地进行直到没有相邻元素需要交换,也就是说该元素已经排序完成。
交换排序顾名思义就是通过元素的两两比较,判断是否符合要求,如过不符合就交换位置来达到排序的目的。冒泡排序名字的由来就是因为在交换过程中,类似水冒泡,小(大)的元素经过不断的交换由水底慢慢的浮到水的顶端。
假设当前我们有一个数组 a,内部元素为 3,4,1,5,2,即初始状态,如下图所示。
进行第一遍排序,如下图所示,红色代表当前比较的元素,绿色代表已经归位的元素。
(1)比较第一个和第二个元素,4>3,交换。
(2)比较第二个和第三个元素,1<3,不交换。
(3)比较第三个和第四个元素,5>1,交换。
(4)比较第四个和第五个元素,2>1,交换。
进行第二遍排序,如下图所示,红色代表当前比较的元素,绿色代表已经归位的元素。
(1)比较第一个和第二个元素,3<4,不交换。
(2)比较第二个和第三个元素,5>3,交换。
(3)比较第三个和第四个元素,2<3,不交换。
进行第三遍排序,如下图所示,红色代表当前比较的元素,绿色代表已经归位的元素。
(1)比较第一个和第二个元素,5>4,交换。
(2)比较第二个和第三个元素,3<4,不交换。
下面给我动态模拟效果:
public void BubbleSort(int[] array){
for(int i=array.length-1;i>0;i--){
boolean flag = false;
for(int j=0;j array[j+1]){
int tmp = array[j];
array[j] = array[j+1];
array[j+1] = tmp;
flag = true;
}
}
if(!flag)
break;
}
}
优点:空间复杂度T=O(1)、稳定排序、在排序过程中,整个数组趋向稳定、对于已经有序的数组,排序效率高。
缺点:效率低,时间复杂度T=O(n^2),交换次数多,交换效率低,不能并发执行。
通过对冒泡排序法进行了介绍,举出实例进行模拟整个排序过程,给出动态展示效果和Java代码,能够很好的理解冒泡排序。冒泡排序的效率过低是它存在的核心问题,后面会对其进行优化和改变。