Java中的经典算法之冒泡排序(Bubble Sort)

Posted 青春灵动

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java中的经典算法之冒泡排序(Bubble Sort)相关的知识,希望对你有一定的参考价值。


最近,有微信粉丝后台留言,要求做一期冒泡排序的教程


冒泡排序(Bubble Sort),是一种计算机科学领域的排序算法


它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。


这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名“冒泡排序”。


冒泡排序算法的原理:(从后往前)

1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。

2、对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。在这一点,最后的元素应该会是最大的数。

3、针对所有的元素重复以上的步骤,除了最后一个。

4、持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。


要求:给定9个整数的数组,采用冒泡排序,实现从小到大的排序,然后输出排序后的数组各元素的值。


以这个数组为例:int[] nums = { 5, 1, 8, 4, 7, 9, 3, 6, 2 };

第一趟排序:

第一次排序:51比较,5大于1,交换位置:1 5 8 4 7 9 3 6 2

第二次排序:58比较,5小于8,不交换位置:1 5 8 4 7 9 3 6 2

第三次排序:84比较,8大于4,交换位置:1 5 4 8 7 9 3 6 2

第四次排序:87比较,8大于7,交换位置:1 5 4 7 8 9 3 6 2

第五次排序:89比较:8小9,不交换位置:1 5 4 7 8 9 3 6 2

第六次排序:93比较:9大3,交换位置:1 5 4 7 8 3 9 6 2

第七次排序:96比较:9大6,交换位置:1 5 4 7 8 3 6 9 2

第八次排序:92比较:9大2,交换位置:1 5 4 7 8 3 6 2 9

第一趟总共进行了8次比较, 排序结果:1 5 4 7 8 3 6 2 9

经过这一趟的比较,已经把最大的数9找出来,移到最右边


第二趟排序:

第一次排序:15比较,1小于5,不交换位置:1 5 4 7 8 3 6 2 9

第二次排序:54比较,5大4,交换位置:1 4 5 7 8 3 6 2 9

第三次排序:57比较,5小7,不交换位置:1 4 5 7 8 3 6 2 9

第四次排序:78比较,7小8,不交换位置:1 4 5 7 8 3 6 2 9

第五次排序:83比较:8大3,交换位置:1 4 5 7 3 8 6 2 9

第六次排序:86比较:8大6,交换位置:1 4 5 7 3 6 8 2 9

第七次排序:82比较:8大2,交换位置:1 4 5 7 3 6 2 8 9

第一趟总共进行了7次比较, 排序结果:1 4 5 7 3 6 2 8 9

经过这一趟的比较,已经把第二大的数8找出来,移到右边


以此类推...直至全部排序完成


从上面的分析可见:N个数字要排序完成,总共进行N-1趟排序,每 i 趟的排序次数为(N-i)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数


废话不多说,直接上代码:

Java中的经典算法之冒泡排序(Bubble Sort)


运行上述代码,输出的结果是


冒泡排序的核心代码就是两个 for 循环,对于初学者而言,最低的要求是把冒泡排序的代码默写出来。只要理解了冒泡排序的原理,冒泡排序才算真正掌握。



每天进步一点点,让自己比别人走的快一步!

☟☟☟

以上是关于Java中的经典算法之冒泡排序(Bubble Sort)的主要内容,如果未能解决你的问题,请参考以下文章

Java中的经典算法之冒泡排序(Bubble Sort)

Java中的经典算法之冒泡排序(Bubble Sort)

Java中的经典算法之冒泡排序(Bubble Sort)

Java中的经典算法之冒泡排序(Bubble Sort)

分享知识-快乐自己:Java中的经典算法之冒泡排序(Bubble Sort)

经典排序算法之冒泡排序(Bubble Sort)