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

Posted 算法与数学之美

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了逗比讲算法:什么是冒泡排序?相关的知识,希望对你有一定的参考价值。

逗比讲算法:什么是冒泡排序?
通过上边的图
大家也可以很清楚看到了
准备要做大事情了!

逗比讲算法:什么是冒泡排序?
死不死上边红黑相间似曾相似?
看不懂的可谷歌翻译一下
可见一般?!!
正事预警!

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

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


阿广的老板
(大熊猫饰)
逗比讲算法:什么是冒泡排序?


阿广
(蘑菇头饰)
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
从梦中惊醒
看到老板的面孔~
瞬间清醒了许多!回答道!
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
逗比讲算法:什么是冒泡排序?
初始状态
逗比讲算法:什么是冒泡排序?


第一轮遍历
逗比讲算法:什么是冒泡排序?

第二轮遍历
逗比讲算法:什么是冒泡排序?


第三轮遍历
逗比讲算法:什么是冒泡排序?

第四轮遍历
逗比讲算法:什么是冒泡排序?


第五轮遍历
逗比讲算法:什么是冒泡排序?


不用多讲解
只要智商正常
多看几遍动画
应该问题不大!了?
下面剖析一下代码
  
    
    
  
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

 来源:视学算法




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

投稿邮箱:math_alg@163.com

以上是关于逗比讲算法:什么是冒泡排序?的主要内容,如果未能解决你的问题,请参考以下文章

手写算法:冒泡排序

毕业生求职必会算法 冒泡排序

python 数据结构与算法之排序(冒泡,选择,插入)

循环语句警告的冒泡排序算法

算法 | 什么是冒泡排序?

(转载)排序一 冒泡排序