当前位置: 首页 > news >正文

算法排序之冒泡排序及优化

public class Bubbling {public static void main(String[] args) {// 定义需要排序的数组int[] arr = {0,1,21,2,31,12,5,8};// 冒泡排序方法bubbleSort(arr);bubbleOptSort(arr);}/*** 冒泡排序* @param arr 数组*/public static void bubbleSort(int[] arr){// i=0,第一轮比较for (int i = 0; i < arr.length - 1; i++) {// 开始比较for (int j = 0; j < arr.length-1-i ; j++){if (arr[j] > arr[j + 1]) {// 交换arr[j+1]和arr[j]int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}System.out.println("第"+(i+1)+"轮排序结果" + Arrays.toString(arr));}System.out.println("冒泡排序最终结果" + Arrays.toString(arr));}/*** 冒泡排序优化* 冒泡排序的一个优化点是在某次遍历中没有发生任何交换时,说明数组已经是有序的,可以提前终止排序。* 这种优化可以显著减少不必要的比较和交换操作,特别是在数组接近有序或已经有序的情况下。* @param arr 数组*/public static void bubbleOptSort(int[] arr){for (int i = 0; i< arr.length - 1;i++){// 在最外层循环定义一个用于判断是否发生交换的标志变量boolean flag = true;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 = false;}}if (flag){break;}System.out.println("第"+(i+1)+"轮排序结果" + Arrays.toString(arr));}System.out.println("冒泡排序优化后最终结果" + Arrays.toString(arr));}}

对比两次执行结果

优化前:

优化后:

 

相关文章:

  • SolarLab - hackthebox
  • 【Android面试八股文】Android中操作多线程的方式有哪些?
  • AtCoder Beginner Contest 358 A~E(F,G更新中...)
  • CSS概述
  • web前端开发哪个城市:探索最佳发展地
  • 数据库面试
  • Docker 基础使用(5)Compose
  • 560. 和为 K 的子数组
  • RoCE网络架构在高性能计算的应用
  • [Golang] go-kit 介绍和使用 (微服务实现工具)
  • 【漏洞复现】飞企互联-FE企业运营管理平台 treeXml.jsp SQL注入漏洞
  • 【每日刷题】Day66
  • Web前端开发12章:深入探索与实战解析
  • Elixir学习笔记——输入输出和文件系统
  • React组件通信方式总结
  • Android Volley源码解析
  • OSS Web直传 (文件图片)
  • 阿里云爬虫风险管理产品商业化,为云端流量保驾护航
  • 包装类对象
  • 从@property说起(二)当我们写下@property (nonatomic, weak) id obj时,我们究竟写了什么...
  • 飞驰在Mesos的涡轮引擎上
  • 基于webpack 的 vue 多页架构
  • 模仿 Go Sort 排序接口实现的自定义排序
  • 软件开发学习的5大技巧,你知道吗?
  • 腾讯优测优分享 | Android碎片化问题小结——关于闪光灯的那些事儿
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 协程
  • C# - 为值类型重定义相等性
  • 好程序员大数据教程Hadoop全分布安装(非HA)
  • #define
  • #QT(QCharts绘制曲线)
  • (04)Hive的相关概念——order by 、sort by、distribute by 、cluster by
  • (c语言版)滑动窗口 给定一个字符串,只包含字母和数字,按要求找出字符串中的最长(连续)子串的长度
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (rabbitmq的高级特性)消息可靠性
  • (Redis使用系列) Springboot 整合Redisson 实现分布式锁 七
  • (八)Docker网络跨主机通讯vxlan和vlan
  • (第二周)效能测试
  • (机器学习的矩阵)(向量、矩阵与多元线性回归)
  • (三)Honghu Cloud云架构一定时调度平台
  • (五)网络优化与超参数选择--九五小庞
  • ****三次握手和四次挥手
  • .gitignore文件忽略的内容不生效问题解决
  • .NET Framework 的 bug?try-catch-when 中如果 when 语句抛出异常,程序将彻底崩溃
  • .net framwork4.6操作MySQL报错Character set ‘utf8mb3‘ is not supported 解决方法
  • .net开发引用程序集提示没有强名称的解决办法
  • .net利用SQLBulkCopy进行数据库之间的大批量数据传递
  • @data注解_一枚 架构师 也不会用的Lombok注解,相见恨晚
  • [ CTF ] WriteUp- 2022年第三届“网鼎杯”网络安全大赛(白虎组)
  • [ Linux 长征路第二篇] 基本指令head,tail,date,cal,find,grep,zip,tar,bc,unname
  • [17]JAVAEE-HTTP协议
  • [20180224]expdp query 写法问题.txt
  • [2544]最短路 (两种算法)(HDU)
  • [BZOJ 1032][JSOI2007]祖码Zuma(区间Dp)
  • [BZOJ 4598][Sdoi2016]模式字符串