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

【基础1】冒泡排序

核心思想

冒泡排序是通过相邻元素的连续比较和交换,使得较大的元素逐渐"浮"到数组的末尾,如同水中气泡上浮的过程

特点:

  • 每轮遍历将最大的未排序元素移动到正确位置
  • ​稳定排序:相等元素的相对位置保持不变
  • ​原地排序:不需要额外存储空间
复杂度
情况时间复杂度空间复杂度
最好情况O(n)O(1)
最坏情况O(n²)O(1)
平均情况O(n²)O(1)
优缺点

优点

  1. 实现简单,代码易读
  2. 不需要额外内存空间
  3. 对部分有序数组效率较高(通过优化)

缺点

  1. 时间复杂度较高,不适合大数据量
  2. 元素需要频繁交换,效率低于其他O(n²)算法(如选择排序)

适用场景

  • 小规模数据排序(n ≤ 1000)
  • 数据基本有序的情况
  • 日常基本很少使用
代码实现(Java)
public class BubbleSortDemo {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]) {int temp = arr[j];arr[j] = arr[j + 1];arr[j + 1] = temp;}}}}public static void main(String[] args) {int[] data = {5, 3, 8, 4, 2};System.out.println("排序前: " + Arrays.toString(data));bubbleSort(data);System.out.println("排序后: " + Arrays.toString(data));}
}
过程示例

初始:  5 3 8 4 2  

第1轮:3 5 4 2 [8]  

第2轮:3 4 2 [5 8]  

第3轮:3 2 [4 5 8]  

第4轮:2 [3 4 5 8]

相关文章:

【基础1】冒泡排序

核心思想 冒泡排序是通过相邻元素的连续比较和交换&#xff0c;使得较大的元素逐渐"浮"到数组的末尾&#xff0c;如同水中气泡上浮的过程 特点&#xff1a; 每轮遍历将最大的未排序元素移动到正确位置​稳定排序&#xff1a;相等元素的相对位置保持不变​原地排序…...

Trae AI 开发工具使用手册

这篇手册将介绍 Trae 的基本功能、安装步骤以及使用方法&#xff0c;帮助开发者快速上手这款工具。 Trae AI 开发工具使用手册 Trae 是字节跳动于 2025 年推出的一款 AI 原生集成开发环境&#xff08;IDE&#xff09;&#xff0c;旨在通过智能代码生成、上下文理解和自动化任务…...

揭开AI-OPS 的神秘面纱 第二讲-技术架构与选型分析 -- 数据采集层技术架构与组件选型分析

基于上一讲预设的架构图&#xff0c;深入讨论各个组件所涉及的技术架构、原理以及选型策略。我将逐层、逐组件地展开分析&#xff0c;并侧重于使用数据指标进行技术选型的对比。 我们从 数据采集层 开始&#xff0c;进行最细粒度的组件分析和技术选型比对。 数据采集层技术架构…...

基于Docker去创建MySQL的主从架构

基于Docker去创建MySQL的主从架构 用于开发与测试环境读写分离 主从的架构搭建步骤 基于Docker去创建MySQL的主从架构 # 创建主从数据库文件夹 mkdir -p /usr/local/mysql/master1/conf mkdir -p /usr/local/mysql/master1/data mkdir -p /usr/local/mysql/slave1/conf mkd…...

操作系统 2.2-多进程总体实现

多个进程使用CPU的图像 如何使用CPU呢&#xff1f; 通过让程序执行起来来使用CPU。 如何充分利用CPU呢&#xff1f; 通过启动多个程序&#xff0c;交替执行来充分利用CPU。 启动了的程序就是进程&#xff0c;所以是多个进程推进 操作系统需要记录这些进程&#xff0c;并按照…...

Jasypt 与 Spring Boot 集成文档

Jasypt 与 Spring Boot 集成文档 目录 简介版本说明快速开始 添加依赖配置加密密钥加密配置文件 高级配置 自定义加密算法多环境配置 最佳实践常见问题参考资料 简介 Jasypt 是一个简单易用的 Java 加密库&#xff0c;支持与 Spring Boot 无缝集成。通过 Jasypt&#xff0c;…...

在CentOS系统上安装Conda的详细指南

前言 Conda 是一个开源的包管理系统和环境管理系统&#xff0c;广泛应用于数据科学和机器学习领域。本文将详细介绍如何在 CentOS 系统上安装 Conda&#xff0c;帮助您快速搭建开发环境。 准备工作 在开始安装之前&#xff0c;请确保您的 CentOS 系统已经满足以下条件&#x…...

Spring Boot拦截器(Interceptor)与过滤器(Filter)详细教程

Spring Boot拦截器&#xff08;Interceptor&#xff09;与过滤器&#xff08;Filter&#xff09;详细教程 目录 概述 什么是拦截器&#xff08;Interceptor&#xff09;&#xff1f;什么是过滤器&#xff08;Filter&#xff09;&#xff1f;两者的核心区别 使用场景 拦截器的典…...

HTML-05NPM使用踩坑

2025-03-04-NPM使用踩坑 本文讲述了一个苦逼程序员在使用NPM的时候突然来了一记nmp login天雷&#xff0c;然后一番折腾之后&#xff0c;终究还是没有解决npm的问题&#x1f61e;&#x1f61e;&#x1f61e;,最终使用cnpm完美解决的故事。 文章目录 2025-03-04-NPM使用踩坑[toc…...

自学嵌入式第29天-----epoll、sqlite3

1. 正确选择触发模式&#xff08;ET 和 LT&#xff09; 水平触发&#xff08;LT&#xff09;&#xff1a;默认模式&#xff0c;只要文件描述符处于就绪状态&#xff0c;epoll_wait 会持续通知。适合大多数场景&#xff0c;编程简单。 边缘触发&#xff08;ET&#xff09;&…...

工作学习笔记:HarmonyOS 核心术语速查表(v14 实战版)

作为在 HarmonyOS 开发一线摸爬滚打的工程师&#xff0c;笔者在 v14 版本迭代中整理了这份带血的实战术语表。 一、架构基础术语速查 A 系列术语 术语官方定义笔者解读&#xff08;v14 实战版&#xff09;开发陷阱 & 解决方案abc 文件ArkCompiler 生成的字节码文件打包时…...

解决AWS EC2实例无法使用IAM角色登录AWS CLI

问题背景 有时&#xff0c;我们希望一台AWS EC2实例&#xff0c;即云服务器&#xff0c;能够使用AWS CLI访问AWS管理控制台资源。 例如&#xff0c;这里&#xff0c;我们想让它能够列出所有IAM用户组。 aws iam list-groups于是&#xff0c;我们使用下面的命令&#xff0c;在…...

Java核心语法:从变量到控制流

一、变量与数据类型&#xff08;对比Python/C特性&#xff09; 1. 变量声明三要素 // Java&#xff08;强类型语言&#xff0c;需显式声明类型&#xff09; int age 25; String name "CSDN"; // Python&#xff08;动态类型&#xff09; age 25 name …...

manus是什么?能干啥?

Manus哪儿来的&#xff1f; ​ Manus是一款由中国团队Monica.im于2025年3月5日发布的通用型AI代理&#xff08;AI Agent&#xff09;产品&#xff0c;旨在通过自主思考、系统规划和灵活工具调用&#xff0c;帮助用户完成各种复杂任务&#xff0c;从而解放用户的时间与创…...

大型语言模型训练的三个阶段:Pre-Train、Instruction Fine-tuning、RLHF (PPO / DPO / GRPO)

前言 如果你对这篇文章可感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 当前的大型语言模型训练大致可以分为如下三个阶段&#xff1a; Pre-train&#xff1a;根据大量可获得的文本资料&#…...

Elasticsearch 2025/3/7

高性能分布式搜索引擎。 数据库模糊搜索比较慢&#xff0c;但用搜索引擎快多了。 下面是一些搜索引擎排名 Lucene是一个Java语言的搜索引擎类库&#xff08;一个工具包&#xff09;&#xff0c;apache公司的顶级项目。 优势&#xff1a;易扩展、高性能&#xff08;基于倒排索引…...

发行基础:热销商品榜单

转载自官方文件 ------------------ 热销商品榜单 Steam 在整个商店范围内有各种热销商品榜单&#xff0c;最醒目的莫过于 Steam 主页上的榜单了。 您也可以在浏览单个标签、主题、类型时找到针对某个游戏类别的热销商品榜单。 主页热销商品榜单 该榜单出现在 Steam 主页上…...

实战案例分享:Android WLAN Hal层移植(MTK+QCA6696)

本文将详细介绍基于MTK平台&#xff0c;适配高通&#xff08;Qualcomm&#xff09;QCA6696芯片的Android WLAN HAL层的移植过程&#xff0c;包括HIDL接口定义、Wi-Fi驱动移植以及wpa_supplicant适配过程&#xff0c;涵盖STA与AP模式的常见问题与解决方法。 1. HIDL接口简介 HID…...

物联网系统搭建

实验项目名称 构建物联网系统 实验目的 掌握物联网系统的一般构建方法。 实验要求&#xff1a; 1&#xff0e;构建物联网系统&#xff0c;实现前后端的交互。 实验内容&#xff1a; CS模式MQTT&#xff08;不带数据分析处理功能&#xff09; 实现智能设备与应用客户端的交…...

微前端框架 Qiankun 的应用及问题分析

一、Qiankun 的核心应用场景与优势 多技术栈共存与灵活集成 Qiankun 支持主应用与子应用使用不同技术栈&#xff08;如 Vue、React、Angular 等&#xff09;&#xff0c;通过 HTML Entry 方式接入子应用&#xff0c;无需深度改造子应用即可实现集成&#xff0c;降低了技术迁移成…...

24/7运行指南:OpenClaw+GLM-4-7-Flash树莓派部署与看门狗配置

24/7运行指南&#xff1a;OpenClawGLM-4-7-Flash树莓派部署与看门狗配置 1. 为什么选择树莓派作为OpenClaw的宿主设备&#xff1f; 去年冬天&#xff0c;当我第一次尝试让OpenClaw在我的主力开发机上24小时运行时&#xff0c;遭遇了严重的资源冲突问题。半夜运行的自动化任务…...

目标检测损失函数进化史:从IoU到EIoU/SIoU/WIoU,YOLOv8性能提升完全指南

引言在目标检测领域&#xff0c;损失函数的设计直接影响着模型的收敛速度和检测精度。作为YOLOv8等先进检测器的核心组件&#xff0c;边界框回归损失函数经历了从简单到复杂的演进过程。传统的IoU&#xff08;Intersection over Union&#xff09;损失虽然直观有效&#xff0c;…...

Qwen2-VL-2B-Instruct性能优化:Web服务并发请求处理与队列管理

Qwen2-VL-2B-Instruct性能优化&#xff1a;Web服务并发请求处理与队列管理 当你的AI图片分析服务突然火了&#xff0c;用户蜂拥而至&#xff0c;同时上传几十张图片要求分析&#xff0c;会发生什么&#xff1f;最直接的结果可能就是服务器卡死&#xff0c;用户看到“服务超时”…...

效果实测:nli-distilroberta-base处理长文本与跨语言推理能力

效果实测&#xff1a;nli-distilroberta-base处理长文本与跨语言推理能力 1. 模型核心能力概览 nli-distilroberta-base作为轻量级自然语言推理模型&#xff0c;在文本理解任务中展现出独特优势。这个基于RoBERTa架构的蒸馏版本&#xff0c;保留了原模型90%以上的性能&#x…...

s2-pro开源大模型实战:低成本GPU部署语音合成服务完整流程

s2-pro开源大模型实战&#xff1a;低成本GPU部署语音合成服务完整流程 1. 前言&#xff1a;语音合成技术的新选择 语音合成技术正在改变我们与数字世界的交互方式。今天要介绍的s2-pro是Fish Audio开源的一款专业级语音合成模型镜像&#xff0c;它让高质量语音合成服务的部署…...

s2-pro语音合成教程:通过API批量提交任务+异步结果回调实现

s2-pro语音合成教程&#xff1a;通过API批量提交任务异步结果回调实现 1. 平台简介 s2-pro是Fish Audio开源的专业级语音合成模型镜像&#xff0c;它能够将文本转换为自然流畅的语音。这个工具特别适合需要批量处理语音合成任务的场景&#xff0c;比如有声书制作、客服语音生…...

三极管基极下拉电阻在高速电路中的关键作用解析

1. 三极管基极下拉电阻的基础认知 第一次接触三极管电路时&#xff0c;我和很多新手一样&#xff0c;对基极那个看似多余的下拉电阻充满疑惑。明明没有它电路也能工作&#xff0c;为什么工程师们总爱画蛇添足&#xff1f;直到有次调试电机驱动电路&#xff0c;三极管莫名其妙地…...

HP-Socket技术债务管理成熟度提升计划:行动项与时间表

HP-Socket技术债务管理成熟度提升计划&#xff1a;行动项与时间表 【免费下载链接】HP-Socket High Performance TCP/UDP/HTTP Communication Component 项目地址: https://gitcode.com/gh_mirrors/hp/HP-Socket HP-Socket作为高性能TCP/UDP/HTTP通信组件&#xff0c;随…...

经典位运算和计算各进制下的各位数字之和

(num & (num - 1)) 是检测2的幂的经典位运算方法&#xff0c;结果为0即为2的幂 if ((num & (num - 1)) ! 0) 按位与&#xff1a; 0 & 0 0 0 & 1 0 1 & 0 0 1 & 1 1 全 1 才 1&#xff0c;有 0 则 0 int lowbit(int x) { …...

el-tabs报错Cannot read properties of null (reading ‘insertBefore‘)

使用elementui-plus的tabs组件在开发中遇到的一个问题&#xff0c;分析了代码&#xff0c;发现逻辑没有任何问题&#xff0c;但是点击tab切换就会报错&#xff1a;Uncaught (in promise) TypeError: Cannot read properties of null (reading insertBefore)调试发现parent参数是…...