冒泡排序(java代码实现)

冒泡排序(java代码实现)冒泡排序和快速排序1、冒泡排序1.1介绍1.2代码实现1.2.1基本实现1.2.2优化2、快速排序2.1介绍2.2代码实现1、冒泡排序1.1介绍1.2代码实现1.2.1基本实现1.2.2优化2、快速排序2.1介绍2.2代码实现…

大家好,又见面了,我是你们的朋友全栈君。

1、冒泡排序

1.1 介绍

冒泡排序(Bubble Sorting) 的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后面,就像水底下的气泡一样逐渐向上冒。

图解:
在这里插入图片描述
数组元素随次数变化:
在这里插入图片描述

1.2 代码实现

1.2.1 基本实现

代码:

public class BubbleSort { 
   
	public static void main(String[] args) { 
   
		int[] arr1 = { 
    9, 5, 6, 8, 2, 7, 3, 4, 1 };
		int temp = 0; // 用于交换

		for (int i = 0; i < arr1.length - 1; i++) { 
   
			for (int j = 0; j < arr1.length - i - 1; j++) { 
   
				// 如果前面的数比后面的数大,就直接交换
				if (arr1[j] > arr1[j + 1]) { 
   
					temp = arr1[j];
					arr1[j] = arr1[j + 1];
					arr1[j + 1] = temp;
				}
			}
			System.out.println("第" + (i + 1) + "趟后的数组元素");
			System.out.println(Arrays.toString(arr1));
		}

		// 输出最后的结果
		System.out.println("最终结果:");
		for (int i : arr1) { 
   
			System.out.print(i + " ");
		}
	}
}

1.2.2 优化

当给定的数组,在一次循环中没有任何的交换时,表明这个数组已经是有序的,就不用继续进行下面的循环,从而提前结束;
例如:int [] arr1= {1,2,4,3};

使用上面的代码,流程如下:
在这里插入图片描述
在第二次交换时就没有交换了,可以直接结束,优化后流程:
在这里插入图片描述

优化的代码: 在代码中添加一个判断,在此次循环中是否有数据交换。

public class BubbleSort { 
   
	public static void main(String[] args) { 
   
		int [] arr1= { 
   1,2,4,3};
		int temp=0; //用于交换
		boolean flag=false; //优化,判断循环是否发生交换
		
		for(int i=0;i<arr1.length-1;i++) { 
   
			for(int j=0;j<arr1.length-i-1;j++) { 
   
				//如果前面的数比后面的数大,就直接交换
				if(arr1[j]>arr1[j+1]) { 
   
					flag=true; 
					temp=arr1[j];
					arr1[j]=arr1[j+1];
					arr1[j+1]=temp;
				}
			}
			
			  if(!flag) { 
    
				  break; //没有交换直接结束 
			  }else { 
    
				  flag=false; //重置flag,方便下一次循环使用 
			  }
			 
			System.out.println("第"+(i+1)+"趟后的数组元素");
			System.out.println(Arrays.toString(arr1));
		}
		
		//输出最后的结果
		System.out.println("最终结果:");
		for (int i : arr1) { 
   
			System.out.print(i+" ");
		}
	}
}
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/152148.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • attributes.add的用法[通俗易懂]

    attributes.add的用法[通俗易懂]Attributes.Add(";如:this.TextBox1.Attributes.add("onblue","window.Label1.style.backgroundColor=’#000000′;");this.TextBox1.Attributes.Add("onblur","this.style.display=’none’");javascript事件:on…

  • 蓝天准系统P750的介绍与开箱

    蓝天准系统P750的介绍与开箱准系统笔记本:准系统笔记本是指使用由工厂(即ODM厂商)采购的标准化笔记本模具,再通过商家或懂技术的玩家安装相兼容的配件(如CPU,显卡,内存,硬盘,光驱,无线网卡,屏幕等)组成的完整笔记本产品。和INTEL于2004年提出的CBB计划有一定相似。2008年的金融危机,使得部分工厂如蓝天、微星向零售商出售模具,准系统笔记本在中国逐渐普及开来。台式DIY装机的人不少,组装笔电的人则不多。对于一个…

  • tomcat日志详解[通俗易懂]

    tomcat日志详解[通俗易懂]文章目录tomcat日志配置tomcat日志文件详解catalina.outcatalina.YYYY-MM-DD.loglocalhost.YYYY-MM-DD.loglocalhost_access_log.YYYY-MM-DD.txthost-manager.YYYY-MM-DD.logmanager.YYYY-MM-DD.log访问日志详细配置tomcat日志文件切割tomcat日志配…

  • 微信小程序推送模板消息功能_小程序推送消息设置

    微信小程序推送模板消息功能_小程序推送消息设置今天KingYiFan给大家分享一下小程序模板消息推送:根据微信小程序最新机制:2019年10月份微信发布了最新模板消息整改公告,由模板消息更改为订阅消息,模板消息将于2020年1月10日下线,下线后这篇文章将失效。最新微信订阅消息文章已发布,请大家移步:https://blog.csdn.net/weixin_39984161/article/details/103888343公告如下:…

  • matplotlib-base_matplotlib3d柱状图

    matplotlib-base_matplotlib3d柱状图作者:Vamei出处:http://www.cnblogs.com/vamei欢迎转载,也请保留这段声明。谢谢!在数据可视化过程中,我们常常需要将数据根据其采集的地理位置在地图上显示出来。比如说我

  • C#静态方法和非静态方法

    使用了static修饰的方法是静态方法,反之则为非静态方法。静态方法是一种特殊的方法,他不属于某个具体的实例。非静态方法可以访问类中的任何成员,而静态方法只能访问静态成员。http://www.cnb

    2021年12月21日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号