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

程序代码园发文地址:Java算法总结之冒泡排序(详解)-程序代码园小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,Java算法总结之冒泡排序(详解)icon-default.png?t=N7T8http://www.byqws.com/blog/3145.html?source=csdn

        冒泡排序(默认升序)

算法原理:
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;
}

运行结果:

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

优化一下代码:

/**
 * 优化
 * @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;
}

运行结果:

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

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

程序代码园发文地址:Java算法总结之冒泡排序(详解)-程序代码园小说,Java,HTML,Java小工具,程序代码园,http://www.byqws.com/ ,Java算法总结之冒泡排序(详解)icon-default.png?t=N7T8http://www.byqws.com/blog/3145.html?source=csdn

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/453233.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

(day 7)JavaScript学习笔记(函数1)

概述 这是我的学习笔记&#xff0c;记录了JavaScript的学习过程&#xff0c;我是有一些Python基础的&#xff0c;因此在学习的过程中不自觉的把JavaScript的代码跟Python代码做对比&#xff0c;以便加深印象。在写博客的时候我会尽量详尽的记录每个知识点。如果你完全没接触过J…

社媒营销会遇到的封号问题

最近看到很多的直播都在教伙伴们怎么用linked in 以及facebook开发客户&#xff0c;比如如何添加联系人&#xff0c;如何用添加好友的话术&#xff0c;如何加群&#xff0c;如何分析客户的背景等等。 有的主播只是讲一些表面的东西&#xff0c;有的主播可能是真的肚子里有货&a…

【DataWhale学习】用免费GPU线上跑StableDiffusion项目实践

用免费GPU线上跑SD项目实践 ​ DataWhale组织了一个线上白嫖GPU跑chatGLM与SD的项目活动&#xff0c;我很感兴趣就参加啦。之前就对chatGLM有所耳闻&#xff0c;是去年清华联合发布的开源大语言模型&#xff0c;可以用来打造个人知识库什么的&#xff0c;一直没有尝试。而SD我…

鸿蒙Harmony应用开发—ArkTS声明式开发(基础手势:StepperItem)

用作Stepper组件的页面子组件。 说明&#xff1a; 该组件从API Version 8开始支持。后续版本如有新增内容&#xff0c;则采用上角标单独标记该内容的起始版本。 子组件 支持单个子组件。 接口 StepperItem() 属性 参数名参数类型参数描述prevLabelstring设置左侧文本按钮内…

硬件软件_驱动程序只有cat,inf,sys,怎么安装?

硬件软件_驱动程序只有cat&#xff0c;inf&#xff0c;sys&#xff0c;怎么安装&#xff1f; 右键点击inf文件 -》 安装 即可完成。

文件外发管理软件(控制文件外发的软件·精选推荐)

无论是与合作伙伴共享资料、还是员工需要在家办公时访问公司内部文件&#xff0c;文件的外发都是必要的。然而&#xff0c;这也带来了数据泄露的风险。 如果没有有效的管理手段&#xff0c;敏感信息可能会被未授权的人员获取&#xff0c;进而对企业的商业机密、客户隐私和知识…

Excel查找函数的高级用法

查找在实际工作中是经常遇到的&#xff0c;那你会查找吗&#xff1f;本期与大家分享6个查找函数技巧。 一、查找的基础用法 1、根据内容查找相应的行数 想知道数据在区域中的位置&#xff0c;可以用MATCH函数。 举个例子&#xff0c;查找“刘冰”在姓名列中所在的函数。 输…

Web-based DBMS Technology 线上数据库

Example Online Databases • https://www.planespotters.net/ • https://www.comics.org/ • https://www.quandl.com/ • https://www.enigma.com/ • https://www.sportradar.com/ Basics of WWW • The Web is a very large client-server system — Connected through r…

Anaconda的使用及spyder相关设置

Anaconda Anaconda是一个Python发行版&#xff0c;主要用于数据科学和机器学习领域。Anaconda集成了许多常用的数据科学工具和库&#xff0c;如NumPy、Pandas、Scikit-learn等&#xff0c;同时还包含了一个强大的包管理器conda和一个集成开发环境Spyder。Anaconda的目标是提供一…

电脑回收站图标更改

小猫图标 效果图 1.下载压缩包 https://www.123pan.com/s/9QRqVv-u3lY.html 解压后得到两个文件 coo.dll&#xff08;满&#xff09; ooo.dll&#xff08;空&#xff09;把这两个文件放到C盘的图片文件夹中 2.更改图标 wini打开设置&#xff0c;选择个性化&#xff0c…

Python学习笔记1:Pycharm首次安装环境搭建汉化

Pycharm首次安装环境搭建汉化笔记 1.下载网址 首先下载专业版的pycharm&#xff0c;这里建议下载专业版是因为功能更全面&#xff0c;社区版的往往没有远程调控等实践功能。 网址贴在下方&#xff1a; https://www.jetbrains.com/pycharm/download/?sectionwindows •Profe…

Vue3组件详情

Vue3组件详情 一、父组件向子组件传值 ref、props二、子组件向父组件传值 emit三、子组件向父组件传值 v-model四、setup语法糖1、基本用法2、data和methods3、计算属性 computed4、监听器 watch、watchEffect5、自定义指令 directive6、import导入的内容可以直接使用7、声明pr…

【Docker】使用Docker部署IT运维管理平台CAT

作者怀揣着一个美好的愿景&#xff0c;旨在提升管理效率、推动开源项目的蓬勃发展。 来一杯咖啡与茶&#xff0c;为 IT 运维从业者减轻管理负担&#xff0c;提升管理效率&#xff0c;从繁重无序的工作中解压出来&#xff0c;利用剩余时间多喝一杯休息一下。 这是一个专为 IT 运…

英伟达推出免训练,可生成连贯图片的文生图模型ConsiStory,生成角色一致性解决新方案

目前&#xff0c;多数文生图模型皆使用的是随机采样模式&#xff0c;使得每次生成的图像效果皆不同&#xff0c;在生成连贯的图像方面非常差。 例如&#xff0c;想通过AI生成一套图像连环画&#xff0c;即便使用同类的提示词也很难实现。虽然DALLE 3和Midjourney可以对图像实现…

k8s+zabbix

一&#xff0c;环境&#xff1a; 1&#xff09;&#xff0c;k8s部署&#xff0c;master和node节点都部署成功 二&#xff0c;部署&#xff1a; 1&#xff09;&#xff0c;安装python3&#xff08;资源中有&#xff09; wget https://www.python.org/ftp/python/3.7.4/Python-…

【Python】新手入门学习:详细介绍组合/聚合复用原则(CARP)及其作用、代码示例

【Python】新手入门学习&#xff1a;详细介绍组合/聚合复用原则&#xff08;CARP&#xff09;及其作用、代码示例 &#x1f308; 个人主页&#xff1a;高斯小哥 &#x1f525; 高质量专栏&#xff1a;Matplotlib之旅&#xff1a;零基础精通数据可视化、Python基础【高质量合集…

为什么选择VR全景进行企业宣传,如何将VR全景运用在企业展示

引言&#xff1a; 随着科技的不断发展&#xff0c;VR全景技术逐渐成为企业宣传的热门选择。那么&#xff0c;为什么越来越多的企业选择使用VR全景技术进行宣传呢&#xff1f; 一&#xff0e;为什么选择VR全景技术进行企业宣传 1. 提升用户体验 VR全景技术可以为用户营造身临…

c++函数SetConsoleTextAttribute

前言 正文 1.作用&#xff1a; 2.函数格式(重点)&#xff1a; 3.参数(重点)&#xff1a; 前言 实用(真的) 正文 1.作用&#xff1a; 更改cmd的背景色与字体颜色 2.函数格式(重点)&#xff1a; SetConsoleTextAttribute(GetStdHandle(STD_OUTPUT_HANDLE),10进制参数); …

怎么查看电脑是不是固态硬盘?简单几个步骤判断

随着科技的发展&#xff0c;固态硬盘&#xff08;Solid State Drive&#xff0c;简称SSD&#xff09;已成为现代电脑的标配。相较于传统的机械硬盘&#xff0c;固态硬盘在读写速度、稳定性和耐用性等方面都有显著优势。但是&#xff0c;对于不熟悉电脑硬件的用户来说&#xff0…

Java学习-Collection集合框架2

1.Set集合的特点 特点体验: 1.1 hashSet的底层实现-哈希表 以及特点 普通二叉树和二分查找树 二分查找树的缺点: 红黑树是什么? HashSet集合去重复的机制:(HashSet比较地址只要地址不同,就不算重复) 此时就需要重写Hashcode和equals方法了: 1.2linkedHashSet特点及底层原理 1.…