深入浅出的排序算法-冒泡排序
2023-09-11 14:16:54 时间
关注我,每天都有优质技术文章推送,工作,学习累了的时候放松一下自己。
本篇文章同步微信公众号
本篇文章同步微信公众号
欢迎大家关注我的微信公众号:「醉翁猫咪」
今天讲讲排序,说要讲就讲,走起
冒泡排序:
什么是冒泡排序呢?(bubble sort)
你是怎么理解冒泡排序算法的呢,有什么可以一下懂得?
为什么这个排序要叫冒泡呢?为什么不叫其他名词呢?其实这个取名是根据排序算法的基本思路命名的,见名知意,冒泡排序,就是想泡泡在水里一样,在水里大的泡泡先浮出水面,就是大的先排出来,最小的最慢排出。
冒泡排序,是对排序的各个元素从头到尾依次进行相邻的大小比较,比如你是队长,在你的面前有一排人,你要将其进行排序,依次按照从小到大排序。
怎么理解最大的值被排除,你是队长,你对面前的一群人看不惯,进行排序,从左到右开始,第一个和第二个进行比较,大的那个就被挑出来,与第三个进行比较,接下来就是依次按照这个方法比较,就能把那个最大的值,最高的给挑出来不是,这就是第一轮的比较。
接下来,最大的就不用跟他比较了,上面所述,在排序时,你面前的人,是不能乱动的,一旦比较哪个大,两者就换位,如果第一比第二个小,就是第二个大时,两者不用换位,第二个就与第三个进行比较。
依照这个方法,两两比较,大的都被排到了最后,那么一旦排完,是不是都依照从小到大,(从低到高)的顺序在你面前排好了。
代码示例
我们用索引下标来解释
//第一轮
for(int index=0;index < arr.length-1; index++){
//相邻两个比较
if(arr[index] > arr[index+1]){
int temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}
print(arr);
for(int index=0;index < arr.length-2;index++){
//这里arr.length-2,为什么比上一次多减了1呢?
//因为第一轮,把最大的排出来了,就不用比较了,少了一个人
if(arr[index] > arr[index+1]){
int temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}
print(arr);
for(int index=0;index < arr.length-3;index++){
if(arr[index]>arr[index+1]){
int temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}
print(arr);
优化
for(int num=1;num<arr.length;num++){
for(int index=0;index<arr.length-num;index++){
if(arr[index]>arr[index+1]){
int temp = arr[index];
arr[index] = arr[index+1];
arr[index+1] = temp;
}
}
}
如果觉得不错,可以分享哦,你的鼓励是我最大的进步!从入门到熟悉!
坚决不放弃!
相关文章
- 动画详解常用排序算法(1)
- 10大排序算法之三:插入排序【稳定的】,复杂度高,系统常在数据少时用插入排序。
- 商汤 | 离线量化算法研究,从经典到原创
- C#,图论与图算法,有向无环图(DAG,Directed Acyclic Graph)的拓扑排序(Topological Sorting)算法与源程序
- C#,数组数据波形排序(Sort in Wave Form)的朴素算法与源代码
- C#,字符串匹配(模式搜索)原生(Native)算法的源代码
- 数值概率算法
- 深入浅出的排序算法-冒泡排序
- 深入浅出的排序算法-选择排序
- 排序算法系列之(五)——为目标打好基础的希尔排序
- 【数据结构】考研 8种排序算法可视化解读
- python实现快速排序算法
- 看动画学算法之:排序-归并排序
- AI学习---回归和聚类算法
- 算法基础复盘笔记Day01【算法基础】—— 快速排序、归并排序、二分、高精度
- 华为OD机试 - 乱序整数序列两数之和绝对值最小(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 - 对称美学(JavaScript) | 机试题+算法思路+考点+代码解析 【2023】
- 华为OD机试 -人数最多的站点(Java) | 机试题+算法思路+考点+代码解析 【2023】
- 【C++】排序算法小结
- 14.2 拓扑排序DFS算法
- 狠补基础-数学+算法角度讲解卷积层,激活函数,池化层,Dropout层,BN层,全链接层
- 我的Java开发学习之旅------>Java经典排序算法之归并排序
- 算法概念--算法汇总大全
- 35排序算法之合并排序
- 二叉排序树查找算法代码
- 排序算法及改进
- Java排序算法(七)堆排序