JavaSE基础50题:28.(数组练习)冒泡排序

概述

给定一个整型数组,实现冒泡排序。
如:给一组数组{5,10,8,3,7}进行冒泡排序。
j一直往下走,和下一个数字进行比较,如果当前数字大于下一个数字,则两个数字交换,否则不换,继续往下走。

代码过程1

在这里插入图片描述
从图中我们可以看出,数组中有5个数字,比较了4趟;
且第1趟比较了4次,第2趟比较了3次,第3趟比较了2次;第四趟比较了1次。

public class P28 {public static void bubbleSort(int[] array) {//此时最外层控制的就是趟数for (int i = 0; i < array.length-1; i++) {//-i 每一趟比较的次数比上一趟比较的次数少1for (int j = 0; j < array.length-1-i; j++) {if (array[j] > array[j+1]) {int tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;}}}}public static void main(String[] args) {int[] array = {2,10,5,3,1,4};bubbleSort(array);System.out.println(Arrays.toString(array));}
}//运行结果
[1, 2, 3, 4, 5, 10]

代码过程2

此过程时过程1的优化。
如:给数组{5,3,7,8,10}进行排序
在这里插入图片描述
从图中我们可以看到,第一趟交换完之后,数据就有序了,第二趟开始就没有发生任何交换,所以我们才能说,当前数组有序了。
正常来说,不管数组有序不有序,代码1都是走array.length-1趟,所以我们优化此代码,让数组排序完成后就结束它的循环。

public class P28 {public static void bubbleSort(int[] array) {//此时最外层控制的就是趟数for (int i = 0; i < array.length-1; i++) {boolean flg = false;//-i 每一次比上一次上一个比较for (int j = 0; j < array.length-1-i; j++) {if (array[j] > array[j+1]) {int tmp = array[j];array[j] = array[j+1];array[j+1] = tmp;flg = true;}}if (flg == false) {return;}}}public static void main(String[] args) {int[] array = {2,10,5,3,1,4};bubbleSort(array);System.out.println(Arrays.toString(array));}
}

此时运行效率大大提高。
可以用冒泡排序运行时间来比较一下,可以比较出来时间大大减少,效率大大提高!

int [] array = new int[10_0000]; //10万个数据for (int i = 0; i < array.length; i++) { //遍历数组,给每个数据赋值array[i] = i;
}
long start = System.currentTimeTimeMillis(); //冒泡排序开始的时间
bubbleSort(array);
long end = System.currentTimeTimeMillis(); //冒泡排序结束的时间
System.out.println(end - start); //冒泡排序的用时

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

什么是高并发系统?

1.1 什么是高并发&#xff1f; 高并发&#xff08;High Concurrency&#xff09;&#xff0c;通常是指通过设计保证系统能够同时处理很多请求。即在同一个时间点&#xff0c;有很多的请求同时访问同一个接口。高并发意味着大流量&#xff0c;需要运用技术手段去抵抗这种大流量…

大数据实践之路 读后感

欢迎关注公众号&#xff1a;数据运营入表资产化服务&#xff0c;获取更多算法源码材料 2023数据资源入表白皮书&#xff0c;推荐系统源码下载-CSDN博客 浅析研发支出费用化和资本化的区别-CSDN博客 商业银行数据资产估值白皮书&#xff0c;推荐系统源码下载-CSDN博客 用友B…

工业以太网交换机的出色优势是什么?

网络交换机可以分为商用网络交换机和工业以太网交换机两种类别。就其灵活性和抗干扰性而言&#xff0c;工业交换机和商用交换机之间存在着显著差异&#xff0c;工业交换机的功能更加实用。 工业以太网和商业网络在数据链路层、网络层和协议层等方面基本上没有本质区别。工业以…

白话机器学习的数学-2-分类

1、设置问题 图片分类&#xff1a;只根据尺寸把它分类为 纵向图像和横向图像。 如果只用一条线将图中白色的点和黑色的点分开&#xff1a; 这次分类的目的就是找到这条线。 2、内积 找到一条线&#xff0c;这是否意味着我们要像学习回归时那样&#xff0c;求出一次函数的斜率…

2024年第三届服务机器人国际会议(ICoSR 2024) | Ei、Scopus双检索

会议简介 Brief Introduction 2024年第三届服务机器人国际会议(ICoSR 2024) 会议时间&#xff1a;2024年7月26日-28日 召开地点&#xff1a;中国杭州 大会官网&#xff1a;www.iwosr.org 进入新时代&#xff0c;科技更新迭代快速发展&#xff0c;机器人不仅变得更加节能&#x…

创新型产品说明书模板的设计与实践,我悟了!

在当今这个快节奏、高效率的时代&#xff0c;产品说明书已经不再仅仅是一纸简单的使用指南。它既是产品的重要组成部分&#xff0c;也是品牌形象和用户体验的关键环节。然而&#xff0c;传统的产品说明书制作方式往往效率低下&#xff0c;管理混乱&#xff0c;难以满足市场的多…

vue3+ts打开echarts的正确方式

实例项目使用 vite5 vue3 ts&#xff0c;项目地址 vite-vue3-charts&#xff0c;预览地址 https://weizwz.com/vite-vue3-charts 准备工作 1. 注册为百度地图开发者 官网地址&#xff0c;然后在 应用管理 -> 我的应用 里&#xff0c;创建应用&#xff0c;创建好后复制 AK …

线上发布稳定性方案介绍

目录 一、方案说明 二、线上发布问题描述 2.1 无损上下线背景说明 2.1.1 服务⽆法及时下线 2.1.2 初始化慢 2.1.3 注册太早 2.1.4 发布态与运⾏态未对⻬ 三、问题解决方案 3.1 无损下线方案 3.1.1 什么是无损下线 3.1.2 传统解决方式 3.1.3 云原生场景解决方案 3.1…

Net6 Core webApi发布到IIS

Net6 Core Api发布到IIS不同于webapi&#xff0c;依赖框架不同&#xff0c;配置也移至项目内Program.cs 一、发布到指定文件夹和IIS&#xff0c;不过注意IIS应用程序池选择的是 “无托管代码“ 在IIS管理器中点击浏览&#xff0c;访问接口路径报500.19&#xff0c;原因是所依赖…

HALCON报错#2021:System clock has been set back 解决方案

如果操作系统修改过时间&#xff0c;再更新到正常的时间后&#xff0c;打开halcon可能会报错#2021&#xff1a;System clock has been set back. 解决方案&#xff1a; 1、联网同步Windows 系统时间。 2、检查以下目录中是否有超过当前时间的文件&#xff08;删除&#xff09…

o2o生活通全开源尊享版+多城市切换+企业付款+交友IM+平台快报

搭建教程 1.把 pigo2ov282.sql 文件里面的网址 test.souho.net 全部批量替换为你的自己的 2.使用 phpmyadmin 导入 pigo2ov282.sql 到你的数据库&#xff08;直接访问/phpmyadmin 即可&#xff09; 3.修改数据库文件/conf/db.php 里的数据库连接信息&#xff08;请勿使用记事本…

最新最全智能科学与技术专业毕业设计选题精华汇总-持续更新中

文章目录 0 简介1 如何选题2 最新智能科学与技术毕设选题3 最后 0 简介 Hi&#xff0c;大家好&#xff0c;随着毕业季的临近&#xff0c;许多同学开始向学长咨询关于选题和开题的问题。在这里&#xff0c;学长分享一些关于智能科学与技术专业毕业设计选题的内容。 以下为学长…

反转链表、链表的中间结点、合并两个有序链表(leetcode 一题多解)

一、反转链表 给你单链表的头节点 head &#xff0c;请你反转链表&#xff0c;并返回反转后的链表。 力扣&#xff08;LeetCode&#xff09;官网 - 全球极客挚爱的技术成长平台 思路一&#xff1a;翻转单链表指针方向 这里解释一下三个指针的作用&#xff1a; n1&#xff1…

Emu2:37B参数开创多模态生成新篇章

引言 多模态任务在人工智能领域一直是极具挑战性的「技术高地」。智源研究院最近开源发布的新一代多模态基础模型Emu2&#xff0c;在这一领域取得了突破性进展。Emu2以其庞大的37B 参数规模和强大的多模态生成能力&#xff0c;为AI的多模态理解和生成开启了新的篇章。 模型概…

Python基础进阶:9个易错知识点

你好&#xff0c;我是kelly。 kelly根据自己平时工作&#xff0c;总结9个易错知识点&#xff0c;希望对大家有用。 知识点1&#xff1a;is 和 is比较是两个变量地址是否相同&#xff0c;比较是两个变量的值&#xff08;内容&#xff09;是否相同。 示例&#xff1a; In [92…

全方面了解vcruntime140_1.dll的解决方法,多种vcruntime140_1.dll丢失的方法

在日常使用电脑时&#xff0c;我们常常遇到各种各样的问题。其中之一就是丢失vcruntime140_1.dll文件&#xff0c;这是一个重要的系统文件&#xff0c;会影响到电脑的正常运行。今天小编就来给大家详细的说说这一方面的咨询&#xff0c;教会大家多种的丢失vcruntime140_1.dll的…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《适应储能参与的调频辅助服务市场机制设计及调度策略》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主的专栏栏目《论文与完整程序》 这个标题涉及到储能技术在电力系统中参与调频辅助服务市场的机制设计和调度策略。下面对标题中的关键术语进行解读&#xff1a; 储能参与的调频辅助服务&am…

Cocos3D项目中fbx模型转gITF模型和glb模型

1.npm安装&#xff1a;先按照npm哈 npm install --save fbx2gltf -g 2. 到指定目录 cd C:\Program Files\nodejs\node_global\node_modules\fbx2gltf\bin\Windows_NT cmd命令行界面进入node_modules\fbx2gltf文件下的bin文件&#xff0c;然后根据平台选择进入相应目录&#…