目录

1、冒泡排序介绍

2、算法步骤

3、Java 实现(带优化)

4、算法复杂度分析

5、优点与缺点


前言

 排序算法的“进化路线”:

冒泡排序 → 选择排序 → 插入排序 → 希尔排序 → 快速排序 → 归并排序 → 堆排序↓Java 内置排序(Arrays.sort)

1、冒泡排序介绍

        冒泡排序是一种简单的排序算法。它重复地遍历要排序的数组,比较相邻的两个元素,如果顺序错误(如前一个比后一个大),就交换它们。

        这个过程像“气泡”一样把较大的元素逐渐“浮”到数组的末尾。


2、算法步骤

如下所示:

  1. 从第一个元素开始,比较相邻的两个元素。
  2. 如果前一个元素大于后一个元素(升序),则交换。
  3. 继续对每一对相邻元素做相同的操作,直到数组末尾。此时,最大的元素已经“冒泡”到最后。
  4. 重复上述过程,但每次遍历的长度减一(因为末尾已有序)。
  5. 当某一轮没有发生任何交换时,说明数组已有序,可以提前结束。


3、Java 实现(带优化)

public class BubbleSort {/*** 冒泡排序 - 升序排列* @param arr 待排序的整型数组*/public static void bubbleSort(int[] arr) {if (arr == null || arr.length <= 1) {return;}int n = arr.length;boolean swapped; // 用于优化:检测是否发生交换for (int i = 0; i < n - 1; i++) {swapped = false;// 每次遍历将最大值“冒泡”到末尾for (int j = 0; j < n - 1 - i; j++) {if (arr[j] > arr[j + 1]) {// 交换元素swap(arr, j, j + 1);swapped = true;}}// 如果本轮没有发生交换,说明数组已经有序if (!swapped) {break;}}}/*** 交换数组中两个元素*/private static void swap(int[] arr, int i, int j) {int temp = arr[i];arr[i] = arr[j];arr[j] = temp;}// 测试示例public static void main(String[] args) {int[] arr = {64, 34, 25, 12, 22, 11, 90};System.out.println("排序前:" + java.util.Arrays.toString(arr));bubbleSort(arr);System.out.println("排序后:" + java.util.Arrays.toString(arr));}
}

输出结果:

排序前:[64, 34, 25, 12, 22, 11, 90]
排序后:[11, 12, 22, 25, 34, 64, 90]

4、算法复杂度分析


5、优点与缺点

1、优点:

  • 实现简单,逻辑清晰。
  • 是稳定排序。
  • 原地排序,空间开销小。
  • 能检测数组是否已有序(通过 swapped 标志优化)。

2、缺点:

  • 时间复杂度高 O(n²),不适合大数据量排序。
  • 效率远低于快排、归并、堆排序等。

建议使用 Java 内置排序:

Arrays.sort(arr); // 使用双轴快排(基本类型)或 Timsort(对象)


参考文章:

1、六大排序算法:插入排序、希尔排序、选择排序、冒泡排序、堆排序、快速排序-CSDN博客文章浏览阅读10w+次,点赞6.3k次,收藏3.4w次。本文详细介绍了排序算法中的插入排序、希尔排序、选择排序、冒泡排序、堆排序以及两种快速排序方法(Hoare版本和挖坑法)。通过动图演示和代码实现,展示了这些算法的工作原理和时间复杂度,帮助读者深入理解排序算法的内部机制。 https://blog.csdn.net/weixin_50886514/article/details/119045154?ops_request_misc=%257B%2522request%255Fid%2522%253A%25220faf03d22b2d125d5f49a4649ad59c85%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=0faf03d22b2d125d5f49a4649ad59c85&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~top_positive~default-1-119045154-null-null.142^v102^control&utm_term=%E5%86%92%E6%B3%A1%E6%8E%92%E5%BA%8F&spm=1018.2226.3001.4187

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

生活毫无头绪就毫无头绪吧(7.24)

最近好长一段时间没有记录了明显感觉自己陷入了混乱中作息规律&#xff0c;专注力&#xff0c;心流&#xff0c;营养的饭菜如今下笔也没有什么头绪&#xff0c;前些日子本有感想但是又疲于记录&#xff0c;忘了许许多多最近在写论文&#xff0c;但尝试了游泳——蛙泳感觉太神奇…

vulhub-master 靶场Apache(httpd)漏洞

apache_parsing_vulnerability 漏洞原理在Apache1.x/2.x中Apache 解析⽂件的规则是从右到左开始判断解析,如果后缀名为不可识别⽂件解析,就再往左判断。如 1.php.xxxxx&#xff0c;Apache会试图识别你的代码&#xff0c;从右往左一个一个试。漏洞攻略参加一个1.php.jpg文件&…

Python 数据分析(一):NumPy 基础知识

目录 1. 简介2. 使用 2.1 ndarray2.2 数据类型2.3 索引与切片2.4 副本与视图2.5 轴的概念2.6 基本运算2.7 常用操作 1. 简介 NumPy&#xff08;Numerical Python&#xff09;是一个开源的 Python 科学计算扩展库&#xff0c;主要用来处理任意维度数组与矩阵&#xff0c;通常…

编程与数学 03-002 计算机网络 04_数据链路层功能

编程与数学 03-002 计算机网络 04_数据链路层功能一、数据链路层的基本任务&#xff08;一&#xff09;封装成帧&#xff08;二&#xff09;差错控制&#xff08;三&#xff09;流量控制二、差错检测与纠正方法&#xff08;一&#xff09;常用的差错检测码&#xff08;二&#…

latex中既控制列内容位置又控制列宽,使用>{\centering\arraybackslash}p{0.85cm}

示例&#xff1a;\usepackage{array} % 为 >{...} 修饰符提供支持\begin{table*}[ht!]\centering \begin{tabular}{p{2.8cm} >{\centering\arraybackslash}p{0.85cm} >{\centering\arraybackslash}p{0.85cm} >{\centering\arraybackslash}p{0.85cm} >{\ce…

医疗数据挖掘Python机器学习案例

1. 医疗数据挖掘概述 医疗数据挖掘是从大量的医疗数据中提取有价值信息和知识的过程&#xff0c;旨在辅助医疗决策、疾病预测、治疗方案优化等。随着医疗信息化的发展&#xff0c;电子病历、医疗影像、基因数据等多源异构数据不断积累&#xff0c;为医疗数据挖掘提供了丰富的素…

人工智能概述

&#x1f31f; 欢迎来到AI奇妙世界&#xff01; &#x1f31f; 亲爱的开发者朋友们&#xff0c;大家好&#xff01;&#x1f44b; 我是人工智能领域的探索者与分享者&#xff0c;很高兴在CSDN与你们相遇&#xff01;&#x1f389; 在这里&#xff0c;我将持续输出AI前沿技术、实…

C++性能优化擂台技术文章大纲

引言性能优化在C开发中的重要性擂台赛形式的优势&#xff1a;激发创意&#xff0c;展示不同优化技巧目标读者&#xff1a;中高级C开发者擂台赛规则设计统一基准测试环境&#xff08;硬件、编译器、优化标志&#xff09;参赛代码需通过功能正确性验证性能指标&#xff1a;执行时…

AI人工智能时代,Bard的智能家政服务助手

AI人工智能时代,Bard的智能家政服务助手 关键词:人工智能、智能家居、Bard助手、机器学习、自然语言处理、物联网、智能服务 摘要:本文深入探讨了AI人工智能时代下,基于Bard技术的智能家政服务助手的实现原理、技术架构和应用场景。我们将从核心技术入手,分析其背后的机器…

MySQL(155)什么是MySQL的事件调度器?

MySQL的事件调度器&#xff08;Event Scheduler&#xff09;是一种强大的工具&#xff0c;用于在指定的时间间隔或特定时间点自动执行SQL语句。它类似于操作系统中的任务计划程序或Cron作业&#xff0c;适用于需要定时执行的任务&#xff0c;如数据归档、定期报告生成、定时清理…

【Zephyr开发实践系列】09_LittleFs文件系统操作

文章目录前言编写目的术语和缩写词方案选择一、Littlefs介绍二、Littlefs搭建步骤1.设备树构建2.自动挂载流程&#xff08;二选一&#xff09;2.1设备树启用自动挂载2.2 在 littlefs_fs.c 中&#xff0c;设备树宏会被展开2.3 模块注册初始化2.4 初始化阶段2.4.1注册Littlefs文件…

保护板测试仪:守护电池安全的“幕后卫士”

在现代科技飞速发展的今天&#xff0c;电池作为各类电子设备和新能源系统的核心动力源&#xff0c;其安全性与稳定性直接关系到设备的正常运行和使用者的安全。而保护板作为电池的“安全卫士”&#xff0c;承担着过充保护、过放保护、短路保护等关键功能。保护板测试仪则是专门…

【unitrix】 6.11 二进制数字标准化模块(normalize.rs)

一、源码 这个模块实现了类型级别的二进制数标准化处理&#xff0c;确保二进制数在组合时保持最简形式。 //! 二进制数字标准化模块 //! //! 提供二进制数字(B<H, L>)的组合前标准化功能&#xff0c;确保数字以最简形式表示&#xff0c; //! 避免同一数值有不同表示形式。…

解决OpenHarmony中找不到pthread_cancel和pthread_setcanceltype等libc符号的问题

笔者在移植三方库到OpenHarmony时遇到了pthread_cancel和pthread_setcanceltype函数找不到的问题&#xff0c;将解决办法分享如下&#xff1a; OpenHarmony的使用的c库musl中注释了这些函数的导出&#xff0c;在third_party/musl/libc.map.txt将屏蔽的函数中取消注释即可

Python编程进阶知识之第五课处理数据(matplotlib)

简介matplotlib 是 Python 中最流行的数据可视化库之一&#xff0c;它可以创建各种高质量的图表。无论是简单的折线图&#xff0c;还是复杂的 3D 图形&#xff0c;matplotlib 都能轻松应对。它提供了类似 MATLAB 的绘图接口&#xff0c;使得用户可以非常方便地进行图表的创建和…

rust-所有权

什么是所有权 所有权是一组规则&#xff0c;它决定了 Rust 程序如何管理内存。所有运行中的程序都必须管理它们对计算机内存的使用方式。某些语言使用垃圾回收&#xff08;GC&#xff09;&#xff0c;在程序运行时定期查找不再使用的内存&#xff1b;另一些语言则要求程序员显式…

破解哈希极化:基于主动路径规划的智算网络负载均衡方案

如今人工智能&#xff08;AI&#xff09;和大模型训练的蓬勃发展&#xff0c;大规模AI算力集群&#xff08;智算集群&#xff09;已成为关键基础设施。这类集群对网络性能&#xff0c;特别是高吞吐、低延迟和无损特性有着严苛要求&#xff0c;RoCE因此被广泛应用。然而&#xf…

Vue工程化 ElementPlus

一、Vue工程化1、环境准备create-vue是Vue官方提供的最新的脚手架工具&#xff0c;用于快速生成一个工程化的Vue项目。提供了以下功能&#xff1a;统一的目录结构本地调试热部署单元测试集成打包上线依赖环境&#xff1a;Node JS 是一个免费、开源、跨平台的JavaScript运行时环…

深入解析TCP:可靠传输的核心机制与实现逻辑

Linux 系列 文章目录Linux 系列前言一、TCP协议的概念1.1 TCP协议的特点1.2 TCP又叫做传输控制协议二、TCP协议段格式2.1、TCP的流量控制----------窗口大小&#xff08;16位&#xff09;2.2 TCP的确认应答机制2.2.1 什么是确认应答机制2.2.2 确认应答机制的优化2.3 超时重传机…

通缩浪潮中的 “测量防线”:新启航如何用国产 3D 白光干涉仪筑牢半导体成本护城河?

一、通缩浪潮下半导体行业的成本困局在通缩浪潮冲击下&#xff0c;半导体行业面临市场需求疲软、产品价格下滑的严峻挑战。为维持竞争力&#xff0c;降低生产成本成为企业生存发展的关键。而 3D 白光干涉仪作为半导体晶圆检测、制程监控的核心设备&#xff0c;传统进口产品价格…