Java算法总结之冒泡排序(详解)

Java算法总结之冒泡排序(详解)程序代码园发文地址 Java 算法总结之冒泡排序 详解 程序代码园冒泡排序 默认升序 算法原理 1 比较相邻的元素 如果第一个比第二个大 就交换他们两个 2 对每一对相邻元素做同样的工作 从开始第一对到结尾的最后一对 在这一点 每一轮最后

欢迎大家来到IT世界,在知识的湖畔探索吧!

程序代码园发文地址:Java算法总结之冒泡排序(详解)-程序代码园

冒泡排序(默认升序)

算法原理:
1、比较相邻的元素。如果第一个比第二个大,就交换他们两个。
2、对每一对相邻元素做同样的工作,从开始第一对到结尾的最后一对。在这一点,每一轮最后的元素应该会是最大的数。




代码示例:

/ * 基本原理 * @param 整型数组arr * @return 整型数组arr */ public int[] BubbleSortBasic(int[] arr){ for(int i = 0;i < arr.length;i++){//排序所需的趟数 for(int j = 0;j < arr.length - 1 - i;j++){//每趟比较次数 if(arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; } } System.out.println("第"+(i+1)+"次排序:"+Arrays.toString(arr)); } return arr; }

欢迎大家来到IT世界,在知识的湖畔探索吧!

运行结果:

Java算法总结之冒泡排序(详解)

欢迎大家来到IT世界,在知识的湖畔探索吧!

从运行结果可以看出,14个数字,需要进行14次排序操作才可以得到最后的结果,但是在第8次已经得到最后的结果,后面运行的排序都是可以省略的。

优化一下代码:

欢迎大家来到IT世界,在知识的湖畔探索吧!/ * 优化 * @param 整型数组arr * @return 整型数组arr * boolean flag 优化,检查每一趟之后是否有序 */ public int[] BubbleSortOptimize(int[] arr){ for(int i = 0;i < arr.length;i++){//排序所需的趟数 boolean flag = false; for(int j = 0;j < arr.length - 1 - i;j++){//每趟比较次数 if(arr[j] > arr[j+1]){ int temp = arr[j]; arr[j] = arr[j + 1]; arr[j + 1] = temp; flag = true; } } System.out.println("第"+(i+1)+"次排序:"+Arrays.toString(arr)); if(flag == false){//如果已经有序,则返回排序后的数组 break; } } return arr; }

运行结果:

Java算法总结之冒泡排序(详解)

从运行结果可以看出,14个数字,需要进行9次排序操作才可以得到最后的结果,但是在第8次已经得到最后的结果,第9次排序是因为需要检验前面的排序也没有得到正确的排序结果。

优化后的排序算法,减少遍历次数,更加高效,建议使用。

程序代码园发文地址:Java算法总结之冒泡排序(详解)-程序代码园


免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/79920.html

(0)

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信