逗比讲算法:什么是冒泡排序?

2019 年 8 月 19 日 算法与数学之美

通过上边的图
大家也可以很清楚看到了
准备要做大事情了!

死不死上边红黑相间似曾相似?
看不懂的可谷歌翻译一下
可见一般?!!
正事预警!

本文将在此公众号上通过一个个
鲜活生动的情景故事和漫画
讲解算法知识和逗比故事

大约每周一篇
好了!下面介绍一下漫画人物


阿广的老板
(大熊猫饰)


阿广
(蘑菇头饰)

从梦中惊醒
看到老板的面孔~
瞬间清醒了许多!回答道!
初始状态


第一轮遍历

第二轮遍历


第三轮遍历

第四轮遍历


第五轮遍历


不用多讲解
只要智商正常
多看几遍动画
应该问题不大!了?
下面剖析一下代码
   
   
     
public void bubbleSort(int[] list) {
int temp = 0; // 用来交换的临时数
// 要遍历的次数
for (int i = 0; i < list.length - 1; i++) {
// 从后向前依次的比较相邻两个数的大小,遍历一次后,把数组中第i小的数放在第i个位置上
for (int j = list.length - 1; j > i; j--) {
// 比较相邻的元素,如果前面的数大于后面的数,则交换
if (list[j - 1] > list[j]) {
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
}
}
System.out.format("第 %d 趟: ", i);
printAll(list);
}
}



对冒泡排序常见的改进方法是加入标志性变量exchange,用于标志某一趟排序过程中是否有数据交换。
如果进行某一趟排序时并没有进行数据交换,则说明所有数据已经有序,可立即结束排序,避免不必要的比较过程。

改进代码如下:
   
   
     
// 对 bubbleSort 的优化算法
public void bubbleSort_2(int[] list) {
int temp = 0; // 用来交换的临时数
boolean bChange = false; // 交换标志
// 要遍历的次数
for (int i = 0; i < list.length - 1; i++) {
bChange = false;
// 从后向前依次的比较相邻两个数的大小,遍历一次后,把数组中第i小的数放在第i个位置上
for (int j = list.length - 1; j > i; j--) {
// 比较相邻的元素,如果前面的数大于后面的数,则交换
if (list[j - 1] > list[j]) {
temp = list[j - 1];
list[j - 1] = list[j];
list[j] = temp;
bChange = true;
}
}
// 如果标志为false,说明本轮遍历没有交换,已经是有序数列,可以结束排序
if (false == bChange)
break;
System.out.format("第 %d 趟: ", i);
printAll(list);
}
}


(双击点看查看大图)



————

编辑 ∑Gemini

 来源:视学算法


泰勒定理的奇闻轶事

丘成桐:漫谈微分几何

Leibniz 如何想出微积分?(一)

线性相关和秩的物理意义

数学史上你认为最丑陋的公式是什么?

陶哲轩谈什么是好的数学

田渊栋:数学的用处(下篇)

你绝对没想过原来数学家这么流氓,一言不合就进行暴力证明

世界上最牛的五篇博士论文

数学中有哪些巧合让人眼前一亮?

算法立功!清华毕业教授美国被抢车,警察无能为力自己用“贪心算法”找回

学术史上的奇文:怎样用数学抓狮子

台大教授的反思:最难的一课 我们却没教给学生

☞麻省理工学院(MIT)研究生学习指导—— 怎样做研究生

☞分享 数学,常识和运气 ——投资大师詹姆斯·西蒙斯2010年在MIT的讲座


算法数学之美微信公众号欢迎赐稿

稿件涉及数学、物理、算法、计算机、编程等相关领域,经采用我们将奉上稿酬。

投稿邮箱:math_alg@163.com

登录查看更多
0

相关内容

简单的说,就是说某个人很逗,有点犯二犯傻,有点可爱。
一份简明有趣的Python学习教程,42页pdf
专知会员服务
76+阅读 · 2020年6月22日
专知会员服务
139+阅读 · 2020年5月19日
算法与数据结构Python,369页pdf
专知会员服务
162+阅读 · 2020年3月4日
Github标星4w+,如何用Python实现所有算法
七月在线实验室
5+阅读 · 2019年5月21日
GitHub超2.7万星,最全Python入门算法来了
新智元
5+阅读 · 2019年4月28日
90 道名企笔试和算法题 (含答题讨论)
技术最前线
6+阅读 · 2018年2月3日
各厂推荐算法!
程序猿
17+阅读 · 2018年1月13日
动手写机器学习算法:K-Means聚类算法
七月在线实验室
5+阅读 · 2017年12月6日
利用 TensorFlow 实现排序和搜索算法
机器学习研究会
5+阅读 · 2017年11月23日
[DLdigest-8] 每日一道算法
深度学习每日摘要
4+阅读 · 2017年11月2日
AI都干过什么让人细思极恐的事?
全球创新论坛
4+阅读 · 2017年9月15日
漫画:什么是Bitmap算法?
算法与数据结构
4+阅读 · 2017年8月6日
机器学习算法比较
我爱机器学习
4+阅读 · 2016年12月11日
Arxiv
35+阅读 · 2019年11月7日
Implicit Maximum Likelihood Estimation
Arxiv
7+阅读 · 2018年9月24日
Arxiv
3+阅读 · 2018年2月24日
Arxiv
6+阅读 · 2018年1月14日
VIP会员
相关VIP内容
相关资讯
Github标星4w+,如何用Python实现所有算法
七月在线实验室
5+阅读 · 2019年5月21日
GitHub超2.7万星,最全Python入门算法来了
新智元
5+阅读 · 2019年4月28日
90 道名企笔试和算法题 (含答题讨论)
技术最前线
6+阅读 · 2018年2月3日
各厂推荐算法!
程序猿
17+阅读 · 2018年1月13日
动手写机器学习算法:K-Means聚类算法
七月在线实验室
5+阅读 · 2017年12月6日
利用 TensorFlow 实现排序和搜索算法
机器学习研究会
5+阅读 · 2017年11月23日
[DLdigest-8] 每日一道算法
深度学习每日摘要
4+阅读 · 2017年11月2日
AI都干过什么让人细思极恐的事?
全球创新论坛
4+阅读 · 2017年9月15日
漫画:什么是Bitmap算法?
算法与数据结构
4+阅读 · 2017年8月6日
机器学习算法比较
我爱机器学习
4+阅读 · 2016年12月11日
相关论文
Top
微信扫码咨询专知VIP会员