冒泡排序
冒泡排序原理:
从左往右,依次比较相邻两个元素的大小,如果第一个元素大于第二个元素,就进行交换位置,第一轮比较结束就会将最大的元素放到最后;
再进行除了最后一个元素之外的元素的比较,确定第二大的元素,放到倒数第二的位置上;
继续上述比较,直到只剩最后一个元素需要比较为止;
示例说明:
对于数组[36,76,44,21,66,18]来说,
第一轮:
36<76,不用交换位置;
76<44,交换位置,数组变为[36,44,76,21,66,18];
76>21,交换位置,数组变为[36,44,21,76,66,18];
76>66,交换位置,数组变为[36,44,21,66,76,18];
76>18,交换位置,数组变为[36,44,21,66,18,76];
可见最大的元素已经确定,而且不用再参加比较,数组变为[36,44,21,66,18,76].
第二轮:
36<44,不用交换位置;
44>21,交换位置,数组变为[36,21,44,66,18,76];
44<66,不用交换位置;
66>18,交换位置,数组变为[36,21,44,18,66,76];
可见除了第一轮最大的元素之外的最大元素也确定了位置,数组变成[36,21,44,18,66,76],
第三轮:
36>21,交换位置,数组变为[21,36,44,18,66,76];
36<44,不用交换位置;
44>18,交换位置,数组变为[21,36,18,44,66,76];
第三大的元素确定了位置,数组变成[21,36,18,44,66,76].
第四轮:
25<36,不用交换位置;
36>18,交换位置,数组变成[25,18,36,44,66,76];
第四大的元素确定了位置,数组变成[25,18,36,44,66,76].
第五轮:
25>18,交换位置,数组变成[18,25,36,44,66,76];
这时就剩下了最后一个元素25没确定位置,而且不需要再比较,那么排序后的数组就为[18,25,36,44,66,76].
总结:
从示例中可以看出,6个元素之间只需要(元素数-1)轮的比较,每一轮中的比较次数为(元素数-轮数)
Java代码实现:
package com.yg.study; public class BubbleSort { public static void main(String[] args) { int[] arr= {36,76,44,21,66,18}; doSort(arr); System.out.println("=============排序结果展示==============="); //可以去掉 for (int i : arr) { System.out.print(i+"\t"); } } private static void doSort(int[] arr) { for(int i=0;i<arr.length-1;i++) { //-1是确定要比较的轮数 System.out.println("************第"+(i+1)+"轮比较************"); //用于区分每一轮比较结果,可以去掉 for (int j = 0; j < arr.length-1-i; j++) { //-1是为了防止数组下标越界,-i是用于排除最后一个元素参与比较 if(arr[j]>arr[j+1]) { //如果前一个元素大于后一个元素,进行位置交换 int temp=arr[j]; arr[j]=arr[j+1]; arr[j+1]=temp; } for (int k : arr) { //用于打印每一次比较的结果,可以去掉 System.out.print(k+"\t"); } System.out.println(); //用于区分每一次比较的结果,可以去掉 } } } }
结果展示:
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!