冒泡排序【Java算法】

news2024/11/15 13:59:58

文章目录

    • 1. 概念
    • 2. 思路
    • 3. 代码实现

1. 概念

比较前后相邻的两个数据,如果前面数据大于后面的数据,就将这两个数据互换。这样对数组的第0个数据到第 N - 1 个数据进行一次遍历后,最大的一个数据就 “沉” 到数组的第 N - 1 个位置。
N = N - 1,如果 N 不为0就重复前面步骤,否则排序完成。

2. 思路

相邻数据作比较,如果前面数据大于后面的数据,就将这两个数据互换,就这样重复下去,那么序列中最大的数据势必会飘到最右边。这里的数组我用 arr 表示,也就是说最大的数据此时位于第 arr.length - 1 的位置;

② 第一组排序完成之后,那么全序列中最大的数据已经出现在最右边了。我们是不是可以用同样的方法再找出第二大、第三大的数据呢?当然可以。数组的长度我们已经知道了,那这样重复的工作要做几遍你知道了吗?要进行 arr.length - 1 遍排序,用 for 循环来实现,此处为外循环;

③ 再看内部冒泡过程,这里当然也通过 for 循环来实现,此处为内循环。冒泡到什么时候停止?到该次冒泡序列的最后一个数据,第一次冒泡序列的最后一个数据位置是 arr.length - 1,第二次的是 arr.length - 2,后面减的数字是否可以用外循环的 i 来取代?当然可以;

④ 在内循环里面,我们首先对前后数字大小进行一个判断,如果前面数字大于后面就交换,用一个临时变量 temp 接收,实现数据互换,直到本次排序结束,再进行下一次排序。

3. 代码实现

public class Main {
    public static void main(String[] args) {
        int[] arr = {4, 1, 2, 7, 6, 15, 3, 11, 8};
        int[] newArr = order(arr);
        for (int number : arr) {
            System.out.print(number + " ");
        }
    }

    public static int[] order(int[] array) {
        int i, j, temp;
        for (i = 0; i < array.length - 1; i++) {
            for (j = 0; j < array.length - i - 1; j++) {
                if (array[j] > array[j + 1]) {
                    temp = array[j];
                    array[j] = array[j + 1];
                    array[j + 1] = temp;
                }
            }
        }
        return array;
    }
}

在这里插入图片描述

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

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

相关文章

UI自动化测试之日志记录和单元测试

设置日志 很多公司要求自动化测试需要有日志记录。 记录程序运行时的状态和结果&#xff0c;方便排查问题。 实现步骤&#xff1a; ①在项目中创建config目录&#xff08;不用创建包&#xff09;&#xff0c;复制粘贴log.conf文件 ②在项目中创建logs目录&#xff0c;用于…

第三方材料检测实验室LIMS系统源码 lims源码

实验室LIMS系统采用国际规范的业务管理流程和严格的质量控制体系&#xff0c;对每个检测流程节点采用 “人、机、料、法、环、测”进行质量控制&#xff0c;可记录&#xff0c;可追溯。强大的数据查询和统计分析能力&#xff0c;提高工作效率&#xff1b;自动化地采集实验室原始…

轻量化YOLOv5改进 | 结合repghost结构冲参数化网络,实现轻量化和加速推理,

RepGhost: A Hardware-Efficient Ghost Module via Re-parameterization 论文总结本文改进repghost 核心代码测试参数量和计算量🔥🔥🔥 “引入RepGhostNet以加速CNN网络推理” “网络宽度的自定义调整:无缝嵌入YOLOv5” “通过结构重参数化优化网络性能” “实现高效和…

nexus迁移

数据和配置迁移 打包两个目录&#xff0c;配置nexus-2.13.0-01和数据sonatype-work 数据量大可以split分割之后迁移再合并 大概看下文件目录 [roottest nexus]# tree -L 3 . ├── nexus-2.13.0-01 │ ├── bin │ │ ├── jsw │ │ ├── nexus │ │ …

拥抱未来:2023年及以后十大DevOps工具的最终清单!

软件开发和 IT 运营的世界在不断发展&#xff0c;DevOps 已成为寻求敏捷性、效率和协作的组织的重要方法。随着我们进入 2023 年及以后&#xff0c;DevOps 格局将随着新工具的引入和现有工具的改进而不断发展。在本文中&#xff0c;我们列出了将在未来几年塑造行业的十大DevOps…

2023年08月IDE流行度最新排名

点击查看最新IDE流行度最新排名&#xff08;每月更新&#xff09; 2023年08月IDE流行度最新排名 顶级IDE排名是通过分析在谷歌上搜索IDE下载页面的频率而创建的 一个IDE被搜索的次数越多&#xff0c;这个IDE就被认为越受欢迎。原始数据来自谷歌Trends 如果您相信集体智慧&am…

如何克服看到别人优于自己而感到的焦虑和迷茫?

文章目录 每日一句正能量前言简述自己的感受怎么做如何调整自己的心态后记 每日一句正能量 行动是至于恐惧的良药&#xff0c;而犹豫、拖延&#xff0c;将不断滋养恐惧。 前言 虽然清楚知识需要靠时间沉淀&#xff0c;但在看到自己做不出来的题别人会做&#xff0c;自己写不出的…

2023华数杯数学建模A题2023华数杯A 题隔热材料的结构优化控制研究

问题1 问题1&#xff1a; 该问题需要建立一个数学模型来描绘织物整体热导率与单根纤维热导率之间的关系。这个模型需要考虑织物的结构&#xff08;如纤维的排列、空隙大小和分布等&#xff09;以及纤维和空隙中的空气对热传导的贡献。此外&#xff0c;我们需要根据织物的整体热…

网页版Java五子棋项目(一)websocket【服务器给用户端发信息】

网页版Java五子棋项目&#xff08;一&#xff09;websocket【服务器给用户端发信息】 一、为什么要用websocket二、websocket介绍原理解析 三、代码演示1. 创建后端api&#xff08;TestAPI&#xff09;新增知识点&#xff1a;extends TextWebSocketHandler重写各种方法 2. 建立…

LeetCode--剑指Offer75(2)

目录 题目描述&#xff1a;剑指 Offer 58 - II. 左旋转字符串&#xff08;简单&#xff09;题目接口解题思路1代码解题思路2代码 PS: 题目描述&#xff1a;剑指 Offer 58 - II. 左旋转字符串&#xff08;简单&#xff09; 字符串的左旋转操作是把字符串前面的若干个字符转移到…

Win11系统下FTP服务器搭建(用于Cadence 中心库服务器搭建)(上)

本文用于快速搭建一个FTP服务器 一、配置IIS Web服务器 使用快捷键【Win R】打开运行窗口&#xff0c;并输入optionalfeatures进入配置windows功能&#xff1b; 选择红框标识选项后&#xff0c;点击确定。 二、配置IIS web 站点 1.首先我们在本地创建一个ftp服务器的根目录…

【Pycharm2022.2.1】python编辑器最新版安装教程(包含2017-2022的所有版本win/mac/linux)

前言 嗨喽~大家好呀&#xff0c;这里是魔王呐 ❤ ~! 永久安装 Pycharm&#xff08;2017-2022的win/mac/linux所有版本&#xff09;/ IntelliJ IDEA也可以, 按照本文教程所写的&#xff0c;具体步骤跟着下面的图文教程一步一步来就行&#xff0c;一分钟即可搞定&#xff0c;过…

超详情的开源知识库管理系统- mm-wiki的安装和使用

背景&#xff1a;最近公司需要一款可以记录公司内部文档信息&#xff0c;一些只是累计等&#xff0c;通过之前的经验积累&#xff0c;立马想到了 mm-wiki&#xff0c;然后就给公司搭建了一套&#xff0c;分享一下安装和使用说明&#xff1a; 当前市场上众多的优秀的文档系统百…

从零搭建一个react + electron项目

最近打算搭建一个react electron的项目&#xff0c;发现并不是那么傻瓜式 于是记录一下自己的实践步骤 通过create-react-app 创建react项目 npx create-react-app my-app 安装electron依赖 npm i electron -D暴露react项目的配置文件&#xff08;这一步看自己需求&#xff0c…

Golang之路---03 面向对象——类型断言

类型断言 作用 检查 i 是否为 nil检查 i 存储的值是否为某个类型 使用方式 第一种&#xff1a; t : i.(T)这个表达式可以断言一个接口对象&#xff08;i&#xff09;里不是 nil&#xff0c;并且接口对象&#xff08;i&#xff09;存储的值的类型是 T&#xff0c;如果断言成…

什么是文件传输协议:文件传输协议初学者介绍

FTP&#xff08;文件传输协议&#xff09;是一种在TCP / IP&#xff08;传输控制协议/ Internet协议&#xff09;网络&#xff08;也就是Internet&#xff09;上实现计算机之间交换和分享文件的方法。用户只要获得了访问权限&#xff0c;就可以在文件传输协议服务器&#xff08…

c++学习(lambda+bind)[27]

lambda 本质&#xff1a;编译器生成一个类 简单的lambda函数 int mian() {//两个数相加的lambdaauto add1 [](int a, int b)->int{return a b; };cout << add1(1, 2) << endl;//省略返回值auto add2 [](int a, int b){return a b; };cout << add2…

国标GB28181视频监控EasyGBS接入大量通道,创建角色接口未响应

国标GB28181协议视频平台EasyGBS是基于国标GB28181协议的视频云服务平台&#xff0c;支持多路设备同时接入&#xff0c;并对多平台、多终端分发出RTSP、RTMP、FLV、HLS、WebRTC等格式的视频流。平台可提供视频监控直播、云端录像、云存储、检索回放、智能告警、语音对讲、平台级…

SAN共享存储架构

SAN共享存储架构 概述 近年在高性能专用存储网络需求的驱使下&#xff0c;许多SAN存储系统应用于高性能计算网络系统、大型网站系统、非线性编辑系统等网络系统中&#xff0c;存储设备与计算机主机系统之间一对一的关系&#xff0c;被可供多个计算机主机共享读写同一个存储设…

预测狗狗币价格 -- 机器学习项目基础篇(5)

Dogecoin(狗狗币)是一种加密货币&#xff0c;就像以太坊或比特币一样-尽管它与这两种着名的硬币完全不同。Dogecoin最初在某种程度上是作为加密爱好者的一个笑话&#xff0c;并从一个以前众所周知的模因中取了它的名字。 在本文中&#xff0c;我们将实现一个机器学习模型&#…