经典算法(1)-冒泡排序

一文学懂经典算法系列之:冒泡排序 本文关键字:经典算法、排序算法、交换排序、冒泡排序、算法实践。冒泡排序也称气泡排序,是经典的交换排序方法。整个过程就是在无序区中对相邻元素进行两两比较,将不满足相对顺序的一对儿元素进行交换,再进行下一对儿元素的比较。每一趟冒泡后,就会送一个最小的元素达到最上端。在无序区中重复这个过程,直到所有的元素有序。... 阅读详情

算法(1)- 冒泡排序

概述

冒泡排序是所有排序里最基础也是程序员必须要会手写的排序算法,他的实现原理其实很简单,就像水泡从水底冒出一样,一颗一颗的往上冒。它默认是从大到小排序,按顺序依次比较相邻的两个数,将小数换到前面,大数换到后面。依次比较n-1轮后获得一个由小到大的有序数组

图解

在这里插入图片描述
如上图,这是第一遍的详解,原数据是[8,6,7,9,1]。第一次:取出第一个数8和第二个数6作比较,8大于6,大数在后,小数在前,即交换8和6的位置,变成[6,8,7,9,1]。第二次:取出第二个数8和第三个数7作比较,8大于7,交换位置,变成[6,7,8,9,1]。第三次:取出第三个数8和第四个数9作比较,8小于9,那么此次不需要交换位置。第四次:取出第四个数字9和第五个数字1作比较,9大于1,交换位置,变成[6,7,8,1,9]。至此第一轮冒泡结束,筛选出最大的数字9。
在这里插入图片描述
如上图,这是全过程,第一遍找出最大数9,第二遍找出第二大数字8,第三遍找出第三大数7,第四遍找出第四大数6,最后只剩1不需要自己比较,所以最终得到的结果为[1,6,7,8,9]

代码

public void BubbleSort(int array[]){
        int count = 0;//进行的轮数
        for(int i=0;i<array.length-1;i++){//循环控制轮数
            for(int j=0;j<array.length-1-i;j++){//循环控制每轮进行比较的次数
                count++;//每一轮都加一
                if(array[j]>array[j+1]){//判断是否大数在前小数在后,并且交换大小数的位置
                    int temp = array[j+1];
                    array[j+1] = array[j];
                    array[j] = temp;
                }
            }
        }
    }

时间复杂度

第一轮需要比较(n-1)次,第二轮比较(n-2)次…第(n-1)轮需要比较1次则总共需要比较 ∑ i = 1 n − 1 ( n − i ) = 1 + 2 + 3 + . . . + n − 1 = n 2 2 − n 2 \sum_{i=1}^{n-1} (n-i) =1+2+3+...+n-1=\frac{n^2}{2}-\frac{n}{2} ∑i=1n−1​(n−i)=1+2+3+...+n−1=2n2​−2n​次,所以冒泡排序的时间复杂度为:O( n 2 n^2 n2)

wsl2上运行带有Isaac Gym的程序报错: GPU Pipeline: disabled 显示GPU Pipeline:disabled,查找相关文档发现是WSL2目前不支持Isaac Gym,时,想要在wsl2上运行,最后报错如下。 阅读详情

相关推荐

实战指南:如何优雅解决SpringBoot3与Mybatis-Plus的版本兼容性问题

本文深入解析SpringBoot3与Mybatis-Plus的版本兼容性问题,提供实战解决方案。通过Maven依赖排除策略、Gradle配置方案及自动配置覆盖策略,有效解决包冲突和初始化顺序问题,确保项目平稳升级。适用于开发者快速解决SpringBoot3与Mybatis-Plus的集成难题。

weixin_28432777的博客 596

经典算法(1):冒泡排序及其优化

冒泡排序算法固然简单,但是在各大竞赛以及大公司的面试里常会考到冒泡排序的优化。这篇博客对冒泡排序进行了两次比较彻底的优化,并有完整的代码实现。

扬帆向海的博客 4万+

【理解机器学习算法】之Clustering算法(Agglomerative Clustering)

是一种层次聚类算法,通过逐步合并或“聚集”它们来构建嵌套聚类。这种方法采用自底向上的方式构建聚类层次:它从将每个数据点作为单个聚类开始,然后迭代合并最接近的聚类对,直到所有数据点合并为一个聚类,或直到达到指定的聚类数量。优点:- 聚合聚类在距离和连接准则的选择上具有多样性,使其适用于各种数据集。- 它产生了一个层次结构,这对于不同规模的聚类数据结构是有信息量的。-缺点:- 对于大数据集来说,它可能计算成本高,因为它需要在每次迭代中计算和更新所有聚类对之间的距离。

Hyman Qiu 2687

头歌实训作业:数据结构十大经典算法(第1关:冒泡排序)

本关任务:实现冒泡排序算法,并将乱序数列变成升序。

B5201234的博客 1015

基于mediapipe的动作捕捉和人物模型的驱动

我实习做这个的时候,当时也找了很多资料,但很多资料都没有讲透,下面我就总结一下自己结合看代码后的感悟,还有一些我认为很重要的点。

qq_58484580的博客 7700

[Multisim][模电实验]简易函数信号发生器的设计与实现_北京邮电大学2019级信通院电子电路实验下

本文记述了笔者设计并实现以±12V供电电压输出1KHZ~10KHZ频率连续可调的方波、三角波和正弦波的过程。其中,方波输出电压峰峰值为12V(误差<20%),占空比可调、三角波输出电压峰峰值为8V(±20%),正弦波输出电压峰峰值≥1V。

lgc0208的博客 4万+

经典算法冒泡排序

经典算法:冒泡排序 冒牌排序概念 自行百度这里不过多赘述。 问题引入 有这样一个数组,请用冒泡排序。int[] arr={5,2,4,9,6,7} 批话不多说直接上代码。 //int[] arr={2,5,7,9,6,7} int L=arr.length;//把数组长度定义为L for(int i=0;i<L-1;i++){ //外层for循环,有几个数循环几次 for(int j=0;j<L-1-i;j++){//内层控制每个数比几次 if(arr

starjv的博客 194

ABAP OO - ALV_TREE例程

项目上比较少有用到ALV_TREE的报表功能,刚好项目上有写了一次,也查阅大量的范例,整合了一写法,给自己做一下笔记。 程序包含功能按钮,按钮下拉,F4帮助,读取选中行,字段双击触发事件,字段前置图标,更新节点,获取节点数据,获取全部子节点,递归算法,DMS模块:创建文档功能,创建文档链接,SNRO创建流水号,缓存数据,下次用户加载进来继续操作。 *&---------------------------------------------------------------------* *&a

大步甩起来 4988

用AI重新定义经典算法——以冒泡排序为例

开发AI智能应用,就下载InsCode AI IDE,一键接入DeepSeek-R1满血版大模型! 标题:用AI重新定义经典算法——以冒泡排序为例 在计算机科学领域,经典的排序算法如冒泡排序、快速排序等一直是学习编程和算法设计的基础。然而,随着人工智能技术的飞速发展,传统算法的学习与应用方式正在被彻底颠覆。本文将以冒泡排序为例,结合最新的AI开发工具InsCode AI IDE以及其背后的强大AI...

EmeraldTiger56的博客 898

c语言串口编程详解

串口: 一种异步通信接口,通常用于低速数据传输。RS-232: 最常见的串口标准,定义了电气特性、连接器和信号线。UART: 通用异步收发传输器,是实现串口通信的硬件模块。通过以上内容,你应能够理解并实现C语言在Windows和Linux平台上的串口编程。希望这本手册能帮助你在实际项目中顺利进行串口通信开发。如果有任何疑问或需要进一步的帮助,请随时提问。

jkzyx123的博客 2221

Open3D 计算FPFH特征【2025最新版】

FPFH特征描述子的python实现,本文最新更新时间为:2025年3月18日。

点云侠的博客 5273

冒泡排序

偶然想到了冒泡排序,就自己写了一个,以备面试使用,很是经典的算法 public static void main(String[] args) { int arr[] = {5,8,7,1,6,9}; for (int i = 0; i < arr.length-1; i++) { for (int j = 0; j < arr.length-1-i; j++) { if (arr[j]>arr[j+1]){

Voldemorts的博客 121

HTML金色流星雨(完整代码)

HTML实现金色流星雨动态效果的完整代码。

AIGC 992

Java算法求最大最小值,冒泡排序,斐波纳契数列,日历一些经典算法

经典的算法总结

java小酱油 2669

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

java冒泡排序经典代码_Java干货分享:冒泡排序

不管学习什么编程语言,冒泡排序都是每一个走上IT路的小伙伴的必经之路。但是还有好多小伙伴对冒泡排序摸不着头脑,今天知了堂小编就来分享一下经典算法——冒泡排序。首先咱们举个金鱼吐泡泡的例子来理解冒泡排序的过程:金鱼吐出的一连串泡泡就是我们要排序的数据,数据就像泡泡浮上水面一样一个一个被排好序,吐出的泡泡越大就会越快浮出水面,相应的,数据里某一个数字越大,那么就能越快的被排好序,当然最大的数字也是第一...

weixin_39827506的博客 2430

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

C语言第九、十周课——经典算法

C语言经典例题对于外层循环遍历到的每一个整数,内层循环用于具体检查该数是否能被 2 到它自身减 1 之间的数整除。在实际应用中,如果要判断更大范围的数是否为素数,通常会采用更高效的算法,比如埃拉托斯特尼筛法等,这些算法可以大大提高判断素数的效率。总体而言,这段代码实现了一个基本的二分查找功能,但需要注意修正输出提示信息时的拼写错误以确保代码的正确性。,由于数组是降序排列的,所以目标元素应该在当前中间元素的左边,因此将。是要判断的数的范围,在本程序中是 100)。,用于存储用户从控制台输入的要查找的目标数字。

qq_58156721的博客 2730

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

java中找最大最小值的算法_Java算法求最大最小值,冒泡排序,斐波纳契数列一些经典算法<不断更新中>...

清明在家,无聊,把一些经典的算法总结了一下.一、求最大,最小值Scanner input=new Scanner(System.in);int[] a={21,31,4,2,766,345,2,34};//这里防止数组中有负数,所以初始化的时候给的数组中的第一个数。int max=a[0];int min=a[0];for (int i = 0; i < a.length; i++) {if...

weixin_36472962的博客 371

Java算法求最大最小值,冒泡排序,斐波纳契数列一些经典算法<不断更新中>

清明在家,无聊,把一些经典的算法总结了一下. 一、求最大,最小值 Scanner input=new Scanner(System.in); int[] a={21,31,4,2,766,345,2,34}; //这里防止数组中有负数,所以初始化的时候给的数组中的第一个数。 int max=a[0]; int min=a[0]; for (int i = ...

weixin_30819085的博客 119

冒泡排序:古老算法中的智慧启示

在计算机科学浩瀚的星空中,排序算法犹如璀璨的星辰,而冒泡排序恰似其中最朴实无华的一颗。这个诞生于计算机发展初期的经典算法,以其简单直观的逻辑原理,成为每个程序员启蒙阶段必经的试炼场。当我们凝视这个看似笨拙的排序方法时,会发现其中蕴含着深刻的算法设计哲学,那些不断比较、交换的循环过程,恰如生命进化中的自然选择,通过最原始的机制实现秩序的建立。

qq_56438516的博客 2171

算法可视化神器!用动画让冒泡排序、二分查找一目了然

分享algorithm-visualizer工具,教你如何将冒泡排序、二分查找等算法转化为直观动画,提升学习与调试效率。

qq_29655327的博客 421

经典算法----基础知识

算法基础:算法稳定性,时间复杂度,空间复杂度

junff 372

LFM2.5-1.2B-Thinking-GGUF算法解析应用:图解经典算法与复杂度分析

本文介绍了如何在星图GPU平台上自动化部署LFM2.5-1.2B-Thinking-GGUF镜像,实现算法可视化教学与复杂度分析。该镜像能够将经典算法如冒泡排序、快速排序等分解为直观的步骤演示,并生成易于理解的伪代码和复杂度图表,特别适用于计算机科学教育中的算法学习场景。

weixin_28840811的博客 164

Java基础知识总结(三):流程控制与经典算法实现

本文摘要(149字): Java流程控制与算法实现是程序员必备的核心能力。文章系统讲解了流程控制语句(break、continue)的使用场景和区别,并通过阶乘和斐波那契数列案例展示递归思想的应用与优化。重点剖析了数组操作技巧,包括数组翻转的交换算法和冒泡排序的实现原理,详细演示了二分查找在有序数组中的高效查询过程。文章包含大量代码示例和算法执行过程图解,帮助理解基础编程结构和经典算法思想,适合Java初学者夯实基础及面试准备。最后简要提及算法复杂度概念,为后续学习铺垫。

weixin_52318532的博客 222

剑指offer:20、数组中的逆序对;21、连续子数组的最大和;22、整数中1出现的次数

20、数组中的逆序对 题目描述 在数组中的两个数字,如果前面一个数字大于后面的数字,则这两个数字组成一个逆序对。输入一个数组,求出这个数组中的逆序对的总数P。并将P对1000000007取模的结果输出。 即输出P%100000000 示例1 输入 1,2,3,4,5,6,7,0 输出 7 笔记:题目很简单,然而按照写出来的,不能通过会超时,找了博客,看到的思路 更加简洁(牛逼)的方法: 先将原序列...

Leia21的博客 416

从基础到进阶:一文掌握排序、查找、动态规划与图算法的全面实现(C++代码实例解析)

算法是计算机科学的核心,也是程序员解决复杂问题的利器。从基础的排序与查找到进阶的动态规划与图论算法,掌握这些技能不仅是提升编程能力的必经之路,更是解决实际问题的根本。本篇文章将通过 C++ 实现多个经典算法,包括排序、二分查找、动态规划、深度优先搜索(DFS)与 Dijkstra 最短路径算法,助你从基础入门到进阶精通。Dijkstra 是经典的单源最短路径算法,适合无负权边的图。我们通过优先队列实现高效的路径计算。冒泡排序是一个简单的排序算法,通过不断比较相邻元素并交换位置,将较大的元素“冒泡”到右侧。

kdayjj966的博客 726
上一篇: Spring系列-(2)HelloWorld的基本构成
下一篇: 经典算法(2)-选择排序
磕瓜子
博客等级 码龄6年 3粉丝 7原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值