冒泡排序(Bubble Sort)

C/C++ Bubble sort冒泡排序算法详解及源码 Bubble sort冒泡排序算法是一种简单的排序算法,它通过重复遍历待排序的元素,比较相邻元素的大小,并依次交换位置,直到整个序列有序。 阅读详情

常见的排序算法有Bubble Sort、Merge Sort、Quick Sort 等,所有排序算的基本法思想都是把一个无限大的数据规模通过算法一步步缩小,指导最后完成排序。

这里分享一下Buuble Sort算法,php版本的。冒泡排序不适合在待排序的数据集特别大的情况下,这里只是一个简易的demo,待排序的数据在10以内。

冒泡排序算法有2种极端的情况所导致的算法复杂度是不一样的:

  1. 所有的数据集都是有序的,则此时通过算法优化可以是算法的复杂度从 O(n^2) 将至 O(n)
  2. 所有的数据集都是无序的,此时算法的复杂度为O(n^2)

初学者在写冒泡排序时很少考虑,如果当数据自身就是一个有序数据集时,对此排序如果不做优化则算法的复杂度则为O(n^2)

下面是PHP版本的2中写法:

第一种

function bubbleSort($arr, $n)
{
        for ($i = 0; $i < $n - 1; $i++) {
            $swap = false;
            for ($j = 0; $j < $n - 1 - $i; $j++) {
                if ($arr[$j] > $arr[$j + 1]) {
                    $tmp = $arr[$j];
                    $arr[$j] = $arr[$j + 1];
                    $arr[$j + 1] = $tmp;
                    $swap = true;
                }
            }
            if ($swap == false)
                break 1;
        }
        return $arr;
 }

第二种

function newBubbleSort($arr, $n)
{
        do {
            $sorted = 1;
            --$n;
            for ($i = 0; $i < $n; $i++) {
                if ($arr[$i] > $arr[$i + 1]) {
                    $t = $arr[$i];
                    $arr[$i] = $arr[$i + 1];
                    $arr[i + 1] = $t;
                    $sorted = 0;
                }
            }
        } while (!$sorted);
        return $arr;
}

通过定义标志位来优化冒泡排序算法。

python:实现Bubble sort冒泡排序(附完整源码) 阅读详情

相关推荐

深入RK3588嵌入式Linux开发:uboot源码定制化移植实战

本文详细介绍了RK3588嵌入式Linux开发中,如何绕过庞大的官方SDK,从官方仓库获取纯净U-Boot源码并进行定制化移植的完整实战流程。内容包括编译环境搭建、交叉工具链配置、源码结构解析、设备树(Device Tree)修改、环境变量定制、编译脚本编写以及常见问题调试技巧,旨在帮助开发者深入理解系统引导过程,掌握为定制硬件适配U-Boot的核心技能。

weixin_29169505的博客 424

冒泡排序法(bubble_sort)

文章目录冒泡排序法时间复杂度测试 冒泡排序法 名称来历: 越小的元素会经由交换慢慢“浮”到数列的顶部 比较相邻的元素,交换 对每一对相邻的元素作同样的工作,从第一队到结尾最后一对,结束之后,最大的元素会跑到最后面 重复操作,除了最后一个元素,第二大元素会跑到倒数第二个位置 持续对越来越少的元素操作,直到最小的元素到了最前面 时间复杂度 最优时间复杂度:O(n) 最坏时间复杂度:O(n^2) ...

小杨的博客 1326

FPGA实战:从零构建eMMC控制器(Verilog篇)

本文详细介绍了如何使用Verilog从零构建FPGA上的eMMC控制器,涵盖eMMC接口基础、命令系统解析、关键模块设计及性能优化技巧。通过实战案例,帮助开发者掌握高速数据存储解决方案,提升嵌入式系统开发能力。

weixin_26802933的博客 298

冒泡排序算法(Bubble Sort)—经典排序算法

导言冒泡排序是最基本、最简单的排序算法之一,它通过多次遍历待排序的数组或列表,依次比较相邻的元素并交换位置,使得较大(或较小)的元素逐渐“浮”到数组的一端。原理分析冒泡排序算法通过多次遍历待排序的数组或列表,依次比较相邻的元素并交换位置,使得较大(或较小)的元素逐渐“浮”到数组的一端。具体来说,算法会从数组的第一个元素开始...

一条晒干的咸鱼的博客 655

【Unity Animation 2D】从零到一:骨骼绑定与IK动画实战指南

本文详细介绍了Unity中2D骨骼绑定与IK动画的实战流程,从角色素材准备、骨骼系统创建到权重绘制和IK设置,逐步指导开发者掌握2D动画制作技巧。通过反向动力学(IK)技术,实现更自然的角色动画效果,适用于游戏开发和动画制作。

weixin_30430677的博客 372

320x240 TFT屏的SPI DMA驱动避坑指南:基于HC32F460的时序调试心得

本文详细介绍了基于HC32F460 MCU驱动320x240 TFT屏的SPI DMA实战经验,涵盖硬件设计、波形诊断、DMA优化及高级调试技巧。重点解析SPI时序配置、DMA缓冲区对齐等常见问题,并提供逻辑分析仪波形诊断方法和性能优化策略,帮助开发者规避典型陷阱,提升显示性能。

weixin_42639246的博客 372

【数据结构与算法】冒泡排序算法(BubbleSort)

C 语言,Python 语言和 Java 语言描述的冒泡排序算法,来看看它们之间的异同吧 !

深入挖掘,筑基为先;知其然,知其所以然。 7628

【扣子AI开发】如何开发一个图像生成智能体?

【扣子AI开发】如何开发一个图像生成智能体,从创建到发布

tl437002770的博客 2427

排序 Bubble Sort(提取函数)

这时候再将剩下的元素序列用同样的方法处理,就会出现所有元素中第二大的元素冒泡,第3大的元素冒泡,一直到最后一个元素不用冒泡了。是指当前待排序的序列中元素最大的那个元素,我们找到这个元素,并把这个元素放到最后一个位置,那么最大的元素就已经排好序了(冒泡了)。我们将冒泡函数Bubble提出出来,交换两个变量的值的函数Swap也提取出来,代码一下子简单了很多。这两个元素的值,不断重复这个过程,最终让所有元素都按照从小到大的顺序存放。是将元素按照从小到大的顺序存放的方法。这时候我们需要找到需要调整的元素对,并。

C++ 爱好者 make_it_simple888 497

lammps后处理:ovito选择原子高级技巧讲解

大家好,我是小马老师。 本文介绍如何在ovito中使用公式(Expression)选择需要的原子。 用ovito查看lammps模拟结果时,可能会遇到选择特定原子的情况,比如选择坐标位于一定范围内的原子,或者选择结构为fcc的原子等等。 这时候,就需要用到expression selection功能。 Expression selection功能比较强大,下面分别介绍几种选择原子的方法。 在输入公式前,先点击“Add modification”->"Expression selection"选项,在B

lammps_jiayou的博客 2万+

YOLO11涨点优化:训练技巧 | 使用标签平滑(Label Smoothing)配合余弦退火学习率,防止过拟合,稳步提点

摘要: YOLO11凭借动态卷积核调度、自适应特征融合等创新成为2026年目标检测主流,但面临训练集过拟合问题。文章聚焦两种零推理开销的正则化技巧:标签平滑(Label Smoothing)和余弦退火学习率(Cosine Annealing LR)。标签平滑通过软化硬标签(如将[1,0]改为[0.9,0.1])防止模型过度自信,代码中通过label_smoothing=0.1一键启用;余弦退火则以平滑的余弦曲线调整学习率(cos_lr=True),避免阶梯衰减的震荡。两者组合可显著缩小YOLO11训练与验证

2601_95807009的博客 45

HDU 5775 Bubble Sort(冒泡排序)

HDU5775BubbleSort(冒泡排序) TimeLimit:2000/1000MS(Java/Others)MemoryLimit:65536/65536K(Java/Others) ProblemDescription - 题目描述 Pisapermutationoftheintegersfrom1t...

190

MATLAB与ROS联合仿真——订阅ROS消息类功能模块介绍

MATLAB与ROS联合仿真——订阅ROS消息类功能模块介绍 (1)输入参数:无 (2)输出参数:Xr和Yr是小车当前在世界坐标系下的坐标 (3)主要作用:作为ROS与MATLAB的通讯接口,从ROS中订阅小车当前的位置信息,并输出 (4)内部结构: (5)具体实现过程:通过ROS工具箱中的Subscribe模块从ROS中订阅话题/gazebo/link_statesa 通过Bus Selector模块选择ROS总线中的Pose

慕羽★的博客 2699

冒泡排序(Bubble Sort)

冒泡排序是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 算法描述 比较相邻的元素。如果第一个比第二个大,就交换它们两个; 对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对,这样在最后的元素...

ThinkWon的博客 1万+

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

冒泡排序 (Bubble Sort)

定义 冒泡排序(英语:Bubble Sort)是一种简单的排序算法。它重复地遍历要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。遍历数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。 这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。 冒泡排序算法的运作如下: 比较相邻的元素。如果第一个比第二个大(升序),就交换他们两个。 对每一对相邻元素...

weixin_42077402的博客 7672

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

冒泡排序Bubble Sort

Niklaus Wirth: “程序=数据结构+算法”排序:将⼀组“⽆序”的记录序列调整为“有序”的记录序列。列表排序:将⽆序列表变为有序列表输⼊:列表输出:有序列表 ...

Python技术博文 492

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

qsort底层逻辑讲解,使用冒泡排序方法(bubble_sort)

众所周知,qsort方法是中的快速排序库函数,但是它的底层逻辑和需要传入的参数,让人摸不着头脑了,所以今天我会去讲解该函数的底层逻辑和参数的作用,还有为什么它可以排序所有类型的数据的原因。。cmp函数,这的cmp函数不是固定的,正如cmp_int是用来比较int类型的数据,这个cmp是函数指针了,指向的是cmp_int函数,

K1的博客 259

冒泡排序 Bubble Sort

文章目录冒泡排序1. 基本原理2. 算法步骤3. 动画演示4. 参考实现5. 复杂度分析6. References 冒泡排序 1. 基本原理 依次比较相邻的两个元素,如果相邻的两个元素的顺序是错误的,则将它们交换,直至没有元素需要交换,排序完成。 在实现上有两种方法: 每一轮让未排序的最大元素交换到正确位置,以下称之为"最大冒泡" 每一轮让未排序的最小元素交换到正确位置,以下称之为"最小冒泡" ...

wylu 500

冒泡排序||Bubble Sort

冒泡排序||Bubble Sort 自我学习总结之冒泡排序(bubble sort) what? 这个算法的名字由来是因为越小/大的元素会经由交换慢慢“浮”到数列的顶端(升序或降序排列),就如同碳酸饮料中二氧化碳的气泡最终会上浮到顶端一样,故名“冒泡排序” 摆原理 1、从第一个元素开始,比较相邻的元素。如果第一个比第二个大,就交换他们两个。 2、对每一对相邻元素做同样的工作,从开始第一对到结尾...

qq_37577146的博客 275

冒泡排序详解(Bubble Sort)

构造的过程就是将无序的序列构造成一个堆的过程。堆的定义是:对于任意一个非叶子节点 i,其左子节点为 2i+1,右子节点为 2i+2,且父节点的值大于等于(或小于等于)其子节点的值。因此,我们可以从最后一个非叶子节点开始,依次将其与其子节点比较,如果不满足堆的定义,则交换位置,直到整个序列构造成一个堆为止。排序的过程就是将堆顶元素与最后一个元素交换位置,然后将剩余元素重新构造成一个堆的过程。每次交换后,堆的大小减一,因此我们可以通过一个变量来记录堆的大小,从而将排序的过程限制在堆的范围内。

Wzill 1万+

在冒泡排序中,需要比较相邻的两个元素的大小,并决定是否需要交换。改写冒泡排序的程序,其中至少包含两个函数:bubble_sort(int a[], int n)和swap

这里是在冒泡排序中,需要比较相邻的两个元素的大小,并决定是否需要交换。改写冒泡排序的程序,其中至少包含两个函数:bubble_sort(int a[], int n)和swap,bubble_sort用于将数组a中的n个元素排序,其中调用函数swap来交换两个数 引用 #include <stdio.h> void swap(int *a,int *b){ int temp; temp=*a; *a=*b; *b=temp; } void bubble_sort (int a[],i.

JC_ZQ_Fighting的博客 573

冒泡排序——Bubble Sort

冒泡排序只会操作相邻的两个数据,每次冒泡操作都会对相邻的两个元素进行比较,看是否满足大小关系要求。 冒泡排序是原地、稳定的排序。 原地:冒泡的过程只涉及相邻数据的交换操作,只需要常量级的临时空间,空间复杂度为O(1)。 稳定:在冒泡排序中,只有交换才可以改变两个元素的先后顺序。当有相邻的两个元素大小相等的时候,不做交换, 相同大小的数据在排序前后不后改变顺序。 时间复杂度:最好情况是有序...

DieJugend的博客 218

冒泡排序bubble sort

集合S = {s0, s1, ..., sn} 第一趟排序范围从s0到sn,相邻的两个数比较,如果升序排序则两个数交换位置,大的数排在小的数的后面;降序排序则相反。 集合进行第一趟比较后,最大的数排在最后的位置n; 第二趟排序范围从s0到sn-1,进行两两比较, 第二趟比较完后,最大的数排在倒数第二位置n-1; ... 排序的范围直到只剩下s0,则顺序就排好了。 public c

jjavaboy的专栏 705
上一篇: logstash 统计告警
下一篇: Mac上安装brew
大胡子码农
博客等级 码龄16年 4粉丝 16原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值