Java冒泡排序详细讲解
冒泡排序是一种简单但效率较低的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。具体实现如下:
算法步骤:
-
比较相邻的元素:从第一个元素开始,依次比较相邻的两个元素,如果顺序不正确就交换它们的位置,直到将最大的元素移到数列末尾。
-
重复上述步骤:对剩下的元素重复上述步骤,每次遍历都能确定一个最大值,并将其放置到正确的位置。
-
重复直到排序完成:持续以上步骤,直到所有元素都已排好序。
Java 代码示例:
public class BubbleSort {public static void bubbleSort(int[] arr) {int n = arr.length;for (int i = 0; i < n - 1; i++) {for (int j = 0; j < n - i - 1; j++) {if (arr[j] > arr[j + 1]) {// 交换 arr[j] 和 arr[j+1]int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}public static void main(String[] args) {int[] arr = {64, 34, 25, 12, 22, 11, 90};bubbleSort(arr);System.out.println("排序后的数组:");for (int i : arr) {System.out.print(i + " ");}}
}
详细讲解:
- 冒泡排序的外层循环控制了总共需要进行几轮比较,对于长度为 n 的数组,需要进行 n-1 轮比较。
- 内层循环中的
j控制了每一轮比较中的具体操作,每轮比较将最大的数交换到最后,因此每次都可以将一个元素放置到正确的位置上。 - 每次比较都是相邻两个元素的比较,如果前一个元素大于后一个元素,则进行交换。
- 最终经过多轮比较,数组将被排列成正确的顺序。
冒泡排序的时间复杂度为 O(n^2),其中 n 为数组的长度。虽然它简单易懂,但对于大型数据集合并不适用,因为其效率较低。
相关文章:
Java冒泡排序详细讲解
冒泡排序是一种简单但效率较低的排序算法,它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。具体实现如下: 算法步骤: 比较相邻的元素:从第一个元素开始,依次…...
python数据解析xpath
前言一、安装?二、使用步骤1.基本使用**【2】谓语(Predicates)**案例 前言 xpath在Python的爬虫学习中,起着举足轻重的地位,对比正则表达式 re两者可以完成同样的工作,实现的功能也差不多,但xp…...
工业镜头常用参数之实效F(Fno.)和像圈
Fno. 工业镜头中常用到的参数F,有时候用F/#,Fno.来表示,指的是镜头通光能力的参数。它可用镜头焦距及入瞳直径来表示,也可通过镜头数值孔径(NA)和光学放大倍率(β)来计算。有效Fno.…...
what is apache?
Apache 通常指 Apache Software Foundation (ASF) 或 Apache HTTP Server,两者都是计算机软件领域的重要实体。 Apache 软件基金会 (ASF):Apache 软件基金会是一个开发开源软件项目的非营利组织。它为涵盖软件开发各个方面的广泛项目提供支持,…...
【二叉树】Leetcode 94. 二叉树的中序遍历【简单】
二叉树的中序遍历 给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 示例 1: 输入:root [1,null,2,3] 输出:[1,3,2] 解题思路 中序遍历是一种二叉树遍历方式,按照“左根右”的顺序遍历二叉树节点。 1、递归…...
Linux进程控制(等待)
进程等待 为什么要进行进程等待 进程等待是什么? 怎么进行进程等待? 回到我们之前进程状态的代码, 我们知道, 在这段代码中,父进程对子进程没有做任何的操作, 所以当子进程在退出后, 会一直处于…...
结构体-C语言
目录 前言 一、定义结构 结构体变量的创建和初始化 二、结构的特殊声明 特别注意: 结构的⾃引⽤ 三、结构体内存对⻬ 对⻬规则 优化结构体 #pragma 结构体传参 四、结构体实现位段 位段的内存分配 位段的跨平台问题 前言 C 数组允许定义可存储相同类…...
Unity DOTS中的baking(四)blob assets
Unity DOTS中的baking(四)blob assets blob assets表示不可变的二进制数据,在运行时也不会发生更改。由于blob assets是只读的,这意味着可以安全地并行访问它们。此外,blob assets仅限于使用非托管类型,这意…...
第三十天-Flask模板 Jinja2
目录 1.什么是模板 2.模板引擎Jinja2 默认配置 全局对象 全局函数 上下文处理器 3.模板中变量的使用 4.模板标签 条件判断if else for循环 添加注释 设置变量 转义显示 5.过滤器 过滤器使用 自定义过滤器 6.全局函数 7.模板中的宏 模板的基础 包含语法 8.…...
在项目中数据库如何优化?【MySQL主从复制(创建一个从节点复制备份数据)】【数据库读写分离ShardingJDBC(主库写,从库读)】
MySQL主从复制 MySQL主从复制介绍MySQL复制过程分成三步:1). MySQL master 将数据变更写入二进制日志( binary log)2). slave将master的binary log拷贝到它的中继日志(relay log)3). slave重做中继日志中的事件,将数据变更反映它自…...
Fragment 与 ViewPager的联合应用(2)
5.创建底部布局bottom_layout <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:orientation"horizontal"android:layout_width"match_parent"android:layout_height"55dp"android:background&qu…...
OriginBot智能机器人开源套件
详情可参见:OriginBot智能机器人开源套件——支持ROS2/TogetherROS,算力强劲,配套古月居定制课程 (guyuehome.com) OriginBot智能机器人开源套件 最新消息:OriginBot V2.1.0版本正式发布,新增车牌识别,点击…...
Java Web-Maven
Maven是apache旗下的一个开源项目,是一款用于管理和构建java项目的工具 Maven的作用 1.依赖管理:方便快捷的管理项目依赖资源(jar包),避免版本冲突问题 我们有的项目需要大量的jar包,采用手动导包的方式非常繁琐,并且版本升级也…...
.Net 异步委托
委托的 BeginInvoke 方法和 EndInvoke 方法可以实现异步执行委托方法。这允许委托的方法在后台线程中执行,而不会阻塞当前线程。小编在之前的webform开发中遇到下载进度条卡死的问题就是用它解决的。 案例: namespace ConsoleApplication1 {class Progr…...
web前端面试题---->HTML、CSS
一.居中方法 block元素如何居中 margin:0 auto;position: absolute; top: 50%; left: 50%; transform: translate(-50%, -50%);flex布局: 对父元素操作 : justify-content:center; al…...
移动端Web笔记day03
移动 Web 第三题 01-移动 Web 基础 谷歌模拟器 模拟移动设备,方便查看页面效果,移动端的效果是当手机屏幕发生了变化,页面和页面中的元素也要跟着等比例变化。 屏幕分辨率 分类: 硬件分辨路 -> 物理分辨率:硬件…...
c++的学习之路:3、入门(2)
一、引用 1、引用的概念 引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空 间,它和它引用的变量共用同一块内存空间。 怎么说呢,简单点理解就是你的小名,家里人叫你小名&#…...
面试经典150题【91-100】
文章目录 面试经典150题【91-100】70.爬楼梯198.打家劫舍139.单词拆分322.零钱兑换300.递增最长子序列77.组合46.全排列39.组合总和(※)22.括号生成79.单词搜索 面试经典150题【91-100】 五道一维dp题五道回溯题。 70.爬楼梯 从递归到动态规划 public …...
在 nginx 中使用 JavaScript
前些日子尝试了在 nginx 中写 JavaScript 的效果。考虑到 JavaScript 作为编程语言不是强需求,在nginx生态上还是 lua 独大,并且还有 openresty 这样一直强力输血,大部分应用场景都能找到参考的解决方案。 插件生态来说,github 上…...
【pytorch】安装合集
使用conda或者pip安装的指令 https://pytorch.org/get-started/previous-versions/ 测试pytorch_gpu是否可用的代码 # 测试pytorch是否安装成功 import torch print(torch.__version__) print(torch.cuda.is_available())...
PyMICAPS:基于Python的气象数据可视化解决方案,提升Micaps数据处理效率300%
PyMICAPS:基于Python的气象数据可视化解决方案,提升Micaps数据处理效率300% 【免费下载链接】PyMICAPS 气象数据可视化,用matplotlib和basemap绘制micaps数据 项目地址: https://gitcode.com/gh_mirrors/py/PyMICAPS PyMICAPS是一个专…...
打造梦幻岛屿的5个秘诀:免费在线规划工具完整指南
打造梦幻岛屿的5个秘诀:免费在线规划工具完整指南 【免费下载链接】HappyIslandDesigner "Happy Island Designer (Alpha)",是一个在线工具,它允许用户设计和定制自己的岛屿。这个工具是受游戏《动物森友会》(Animal Crossing)启发…...
优化缺陷密度,核心是从“事后救火”转向“全程预防”
优化缺陷密度,核心是从“事后救火”转向“全程预防”,通过系统化的流程和工具,在生产代码中构建 “计划-执行-检查-改进”的持续优化闭环。📈 第一步:测量与评估,建立基线测量缺陷密度:按质量阶…...
Unity UGUI血条蓝条从零实现:Canvas层级、RectTransform锚点与FillAmount原理
1. 这不是“拖拽控件就完事”的UI课,而是让你真正理解UGUI底层逻辑的起点 很多人学Unity UI,上来就是打开Canvas、拖个Button、改个颜色、加个OnClick事件——看起来5分钟就能做出个界面,结果一到要做血条、要动态更新、要适配不同分辨率、要…...
洛雪音乐音源项目完整指南:免费获取全网高品质音乐的终极解决方案
洛雪音乐音源项目完整指南:免费获取全网高品质音乐的终极解决方案 【免费下载链接】lxmusic- lxmusic(洛雪音乐)全网最新最全音源 项目地址: https://gitcode.com/gh_mirrors/lx/lxmusic- 洛雪音乐音源项目是一个专为洛雪音乐软件设计的开源音源集合…...
解锁KDE桌面美学:Lightly主题隐藏配置选项完全指南 [特殊字符]
解锁KDE桌面美学:Lightly主题隐藏配置选项完全指南 🎨 【免费下载链接】Lightly A modern style for qt applications. 项目地址: https://gitcode.com/gh_mirrors/lig/Lightly Lightly是一个基于Breeze主题的现代化、简约风格KDE主题,…...
AI Agent驱动的管理咨询实战手册(麦肯锡/BCG未公开方法论首次披露)
更多请点击: https://intelliparadigm.com 第一章:AI Agent驱动的管理咨询范式革命 传统管理咨询依赖专家经验、手工访谈与静态模型,响应周期长、知识复用率低、规模化交付困难。AI Agent 的崛起正从根本上重构这一价值链——它不再是辅助工…...
ABAP系统实现OAuth 2.0最小权限控制的原生方案
1. 这不是一次“配个Token就完事”的集成——为什么ABAP系统里OAuth 2.0落地总卡在“权限过宽”这道坎上你有没有遇到过这样的场景:前端调用SAP Fiori应用,后端ABAP系统需要校验用户身份和操作权限;团队决定上OAuth 2.0,理由很充分…...
为什么92%的OTA试水AI Agent后6个月内放弃?——头部旅行社CTO亲述3大技术断层
更多请点击: https://kaifayun.com 第一章:为什么92%的OTA试水AI Agent后6个月内放弃?——头部旅行社CTO亲述3大技术断层 在2023–2024年OTA行业AI落地调研中,某第三方机构追踪了137家上线AI Agent原型系统的在线旅游企业&#…...
阿里云DataV技术
DataV是什么:阿里云DataV是一个企业级数据可视化应用搭建平台,核心定位是让用户通过图形化界面(拖拽组件、配置数据),快速搭建出专业水准的大屏可视化应用。它特别适合会议展览、业务监控、风险预警、地理信息分析等需…...
