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 };
第一趟排序:
第一次排序:5和1比较,5大于1,交换位置:1 5 8 4 7 9 3 6 2
第二次排序:5和8比较,5小于8,不交换位置:1 5 8 4 7 9 3 6 2
第三次排序:8和4比较,8大于4,交换位置:1 5 4 8 7 9 3 6 2
第四次排序:8和7比较,8大于7,交换位置:1 5 4 7 8 9 3 6 2
第五次排序:8和9比较:8小于9,不交换位置:1 5 4 7 8 9 3 6 2
第六次排序:9和3比较:9大于3,交换位置:1 5 4 7 8 3 9 6 2
第七次排序:9和6比较:9大于6,交换位置:1 5 4 7 8 3 6 9 2
第八次排序:9和2比较:9大于2,交换位置:1 5 4 7 8 3 6 2 9
第一趟总共进行了8次比较, 排序结果:1 5 4 7 8 3 6 2 9
经过这一趟的比较,已经把最大的数9找出来,移到最右边
第二趟排序:
第一次排序:1和5比较,1小于5,不交换位置:1 5 4 7 8 3 6 2 9
第二次排序:5和4比较,5大于4,交换位置:1 4 5 7 8 3 6 2 9
第三次排序:5和7比较,5小于7,不交换位置:1 4 5 7 8 3 6 2 9
第四次排序:7和8比较,7小于8,不交换位置:1 4 5 7 8 3 6 2 9
第五次排序:8和3比较:8大于3,交换位置:1 4 5 7 3 8 6 2 9
第六次排序:8和6比较:8大于6,交换位置:1 4 5 7 3 6 8 2 9
第七次排序:8和2比较: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)次,所以可以用双重循环语句,外层控制循环多少趟,内层控制每一趟的循环次数
废话不多说,直接上代码:
运行上述代码,输出的结果是
冒泡排序的核心代码就是两个 for 循环,对于初学者而言,最低的要求是把冒泡排序的代码默写出来。只要理解了冒泡排序的原理,冒泡排序才算真正掌握。
每天进步一点点,让自己比别人走的快一步!
☟☟☟
以上是关于Java中的经典算法之冒泡排序(Bubble Sort)的主要内容,如果未能解决你的问题,请参考以下文章