JAVA实现冒泡排序(优化)

package cn.tedu.array;

import java.util.Arrays;

/**
 * 本类用来完成冒泡排序
*@author Administrator
*version 创建时间:2021年5月8日 下午4:29:07
*/
public class BubbleSort {
	//创建程序的入口函数main()
	public static void main(String[] args) {
		//1、创建无需的数组arr
		int[] arr= {27,96,73,25,21};
		//2、调用自定义排序方法完成排序
		int[] newA=method(arr);
		System.out.println("排序完毕:"+Arrays.toString(newA));
	}

	public static int[] method(int[] arr) {
		//数组是引用类型
		//1、外层循环,控制的是比较的轮数,假如有n个数,最多比较n-1轮
		//开始:1
		//结束:arr.length-1
		//变化:++
		boolean flag=false;  //定义flag进行性能优化
		for(int i=1;i<=arr.length-1;i++) {  //参数和返回值都是int类型的数组
			System.out.println("第"+i+"轮");
			//2、内层循环:相邻比较,位置不对互换位置
			//开始:0
			//结束:arr.length-1
			//变化:++
			for(int j=0;j<arr.length-i;j++) {  //控制比较次数
				//相邻比较,a[j]代表的是前一个元素,a[j+1]代表的是后一个元素
				if(arr[j]>arr[j+1]) {
					//交换数据
					int temp=arr[j];
					arr[j]=arr[j+1];
					arr[j+1]=temp;
					flag=true;     //如果有数据交换,将flag的值改变
					//如果交换数据,就打印,没有数据交换的就不打印
					System.out.println("第"+(j+1)+"次比较交换后:"+Arrays.toString(arr));
				}
			}
			if(flag==false) {
				return arr;    //如果没有进行数据交换,即后续不会再进行交换,数据已经排好,直接返回数组
			}
			System.out.println("第"+i+"轮的结果:"+Arrays.toString(arr));
		}
		return arr;
	}
}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_43802023

你的鼓励就是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值