学习笔记--数据结构与算法--冒泡排序

【Python数据结构与算法笔记day01】数据结构与算法(Python) 文章目录数据结构与算法(Python)Why? 数据结构与算法(Python) Python数据结构与算法 1. 引入概念 1.1. 第一次尝试 1.2. 算法的提出 1.3. 第二次尝试 1.4. 算法效率衡量 1.5. 算法分析 1.6. 常见时间复杂度 1.7. Python内置类型性能分析 1.8. 数据结构 2. 顺序表 2.1. 顺序表的形式 2.2. 顺序表的结构与实现 2.3. ... 阅读详情

冒泡排序

冒泡排序是一种基于比较的排序算法,每次冒泡操作都会比较相邻的两个数,检查是否满足大小关系,如果不满足就互换。一次冒泡操作至少让一个元素移动到家排序后所在的位置。重复n次就完成了排序。

还是图比较直观,以5、3、8、2、7、1数据为例,来画个图。

 

我的冒泡实现

 

这是我最原始的实现,冒泡排序

这样过程进行6次就完成了冒泡的排序

 

这是我实现的冒泡排序的代码:

public void sort(Integer[] data) {

 
if (data == null || data.length <= 1) {
   
return;
 
}

 
for (int i = 0; i < data.length; i++) {
   
boolean breakFlag = false;
   
// 进行冒泡操作,
   
for (int j = 0; j < data.length; j++) {
     
//进行当前的元素每一项比较
     
if (data[i] < data[j]) {
        Integer item = data[i]
;
       
data[i] = data[j];
       
data[j] = item;
       
breakFlag = true;
     
}
    }

    System.
out.println("当前前第:" + i + "次:" + Arrays.toString(data));

   
// 当一次冒泡没有数据进行交换,说明排序已经完成
   
if (!breakFlag) {
     
break;
   
}
  }
}

 

我的冒泡还有很大的改进空间,再来一个标准的冒泡排序的实现

 

老师的标准的冒泡排序:

 

这是老师的标准的冒泡排序算法的一次冒泡操作

再来看看完整的一个冒泡的过程:

标准的冒泡排序的算法的实现:

public class BubbleSort<T> implements SortInf<T> {

 
@Override
 
public void sort(T[] data) {
   
if (null == data || data.length <= 1) {
     
return;
   
}

   
int dataLength = data.length;

    for
(int i = 0; i < dataLength; i++) {
     
boolean brakFlag = false;
     
// 一次冒泡操作,至少一个元素放置到了排序之后所在的位置,比较交换的次数也会越来越少
     
for (int j = 0; j < dataLength - i - 1; j++) {
       
// 过行数据中的两两比较,(x < y) ? -1 : ((x == y) ? 0 : 1);
        //
在数值的比较中,如果左边的数比右边的数小,则返回-1,
       
if (((Comparable) data[j]).compareTo(data[j + 1]) > 0) {
         
T dataTmp = data[j];
         
data[j] = data[j + 1];
         
data[j + 1] = dataTmp;
         
brakFlag = true;
       
}
      }
      System.
out.println("当前第:" + i + "次:" + Arrays.toString(data));
     
// 如果一次交换则不存在数据交换时,则说明数据已经冒泡完成,无需再冒泡操作
     
if (!brakFlag) {
       
break;
     
}
    }
  }
}

 

冒泡排序总结

算法名称

最好情况时间复杂度

最好情况的原始数据

最坏情况时间复杂度

最坏情况的原始数据

平均情况时间复杂度

是否基于比较

空间复杂度

是否稳定排序算法

冒泡排序

O(N)

原始数据已经是有序,元需交换

O( )

原始数据倒序排列

O( )

 

是

O(1)

原地排序算法

是

(在相等情况下不做交换)

 

冒泡法排序对相邻的两个元素进行比较 冒泡法排序对相邻的两个元素进行比较,并把小的元素交到前面。 立即下载

相关推荐

从零到一:手把手教你用C#开发AGV调度系统(附避坑指南)

本文详细介绍了如何使用C#开发高效的AGV调度系统,涵盖从环境搭建到核心算法实现的完整流程。重点解析了动态路径规划、多机协同等关键技术,并提供了实用的避坑指南和性能优化建议,帮助开发者快速构建工业级车辆控制调度系统。

blockchain9miner的博客 741

排序算法之相邻之间分高低----冒泡排序

冒泡排序的基本思路是:每次比较两个相邻的元素,如果它们的顺序错误就把它们交换过来。 例如,我们需要12 43 54 64 23这几个数从大到小排序。那么小的数自然小排在后面。首先比较12和43,由于12比43小,则互换它们的位置,顺序变成43 12 54 64 23。 按照刚才的做法,比较第二位和第三位,发现12比54小,则互换它们的位置,顺序变成43 54 12 64 23。以此类推,当一轮比较...

为光。的博客 903

Unity特效序列帧输出全攻略:Recorder+Timeline保姆级教程(解决透明通道问题)

本文提供Unity特效序列帧输出的完整解决方案,重点讲解如何结合Recorder与Timeline工具,实现带透明通道的PNG序列帧高效输出。通过保姆级教程,详细解析摄像机隔离、层级设置、参数配置等关键步骤,并深度解决透明通道丢失等常见问题,帮助特效师和动画师打通引擎创作与后期合成的工作流。

tensorflowjs6的博客 429

【高性能计算】经典的串行排序算法和并行排序算法

快速排序也可以并行化处理,它是一种基于分治策略的排序算法,常用的方法是选取一个枢纽元素,将数组划分为两个部分,并将小于枢纽元素的元素放入左侧部分,将大于枢纽元素的元素放入右侧部分。选择排序是一种简单直观的排序算法,它的工作原理是每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。归并排序也是一种常见的排序算法,它的核心思想是将待排序数组分成若干个子数组,对每个子数组进行排序,然后再将已经有序的子数组合并成一个有序的数组。冒泡排序是一种简单的排序算法。

慢热型网友的博客 3496

YoloV8改进策略:轻量级的CloFormer助力Yolov8在速度和精度上实现双双提升

CloFormer是清华大学在今年发表的轻量级主干网络,引入了AttnConv,一种attention风格的卷积算子。所提出的AttnConv使用共享权重来聚合局部信息,并配置精心设计的上下文感知权重来增强局部特征。AttnConv和普通attention的结合使用池化来减少CloFormer中的FLOPs,使模型能够感知高频和低频信息。这篇文章主要向大家讲解如何将CloFormer加入到YoloV8中。论文链接:https://arxiv.org/abs/2303.17803v5。

m0_47867638的博客 4311

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

RH850从0搭建Autosar开发环境【3X】- Davinci Configurator之Port模块配置详解(MCAL配置)

weixin_42412049的博客 2276

C语言——冒泡排序法,数组

第二轮对剩下的(N-1)个数进行比较需要比较【(N-1)-1】次,将最大的数放入倒数第二个数组元素中。冒泡排序又称起泡法,它从头到尾每次都对相邻的两个数进行比较,将较大的那个数换到后一个元素中(当然也可以将最小数换到后面,这里仅以从小到大的排序为例)。以此类推,第(N-1)轮需要进行1次比较,将剩下的两个数,最大的放入第二个数组元素,最小的在第一个数组元素。如果比较N个数,则需要比较(N-1)轮。

浩泽学编程的博客 6277

IPv6之001-IPv6是什么

技术本质:IPv6(Internet Protocol version 6)是互联网工程任务组(IETF)设计的网络层核心协议,用于替代IPv4核心使命:解决IPv4地址枯竭问题,重构互联网基础架构,支撑万物互联时代革命性特征fill:#333;color:#333;color:#333;fill:none;IPv6128位地址空间无状态自动配置原生IPsec加密协议头部精简。

老韩的Linux云计算架构师进阶之路 1390

C语言:冒泡排序。

问题 冒泡排序(Bubble Sort),也称为沉降排序(Sinking Sort),之所以称其为冒泡排序,是因为算法中值相对较小的数据会像水中的气泡一样逐渐上升到数组的最顶端。与此同时,较大的数据逐渐地下沉到数组的底部。这个处理过程需在整个数组范围内反复执行多遍。每一遍执行时,比较相邻的两个元素。若顺序不对,则将其位置交换,当没有数据需要交换时,数据也就排好序了。 编程将排序函数DataSort...

耳东 3056

UNet改进(3):Local Attention增强的UNet网络-医学图像分割

本文提出一种改进的UNet网络,通过引入局部注意力机制增强医学图像分割性能。该方法在传统UNet编码器-解码器结构中,创新性地整合了通道注意力和空间注意力模块,使网络能自适应聚焦关键区域。注意力机制通过特征重标定增强有用信息并抑制噪声,显著提升了小目标分割和边缘检测的精度,同时保持较低计算开销。实验表明,该方法在肿瘤分割等任务中具有更好表现,为医学图像处理提供了新的优化思路。

2501_91516851的博客 2063

springboot整合sharding-jdbc实现分库分表详解

springboot整合sharding-jdbc实现分库分表详解

congge 9090

用“冒泡排序法”进行排序

1.冒泡排序法 冒泡排序法的基本思路是:每次将相邻的两个数比较,将比较小的那个放在前头,最后形成一个降序的排列。 例如:下面输入10个数然后对这10个数进行排序 #include <stdio.h> int main() { int a[10]; int i,j,t; printf("请输入10个数:\n"); for(i=0;i<10;i++...

奔跑的语言小白 1735

【固态变压器(SST)全维度解析】发展历史、技术、玩家、挑战与数据中心趋势

SST正处于技术突破向规模化商用的关键过渡期,随着SiC/GaN器件降价、标准完善、可靠性数据积累,其在数据中心的渗透率将快速提升。短期(2025 - 2027年)以示范项目为主,中长期(2030年后)有望成为超大规模智算中心的主流供电方案。

昔时扬尘处 2127

数据结构与算法学习笔记五 --- 冒泡排序算法

冒泡排序算法 冒泡排序算法原理: 从未排序的序列的开头开始,比较相邻的两个元素,将值大(小)放在右边,每轮比较完成都会将最大(最小)放在最后一位,下一轮就只要从开头比较到倒数第二个。以此类推,直到序列排序完毕。 对于一个有n个元素的序列,需要进行 n-1 轮循环比较. 冒泡排序算法的python 实现 代码如下: ef bubble_sort(alist): """冒泡排序""" ...

Hajo 239

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

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

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

数据结构与算法学习笔记——冒泡排序、选择排序

冒泡排序 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 优化: 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在排序过程中设置一个标志flag判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排序写好后,在进行) 实现思路 (1)一共进行数组的大小-1次大的循环 (2)每一

qq_29384339的博客 302

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

数据结构与算法学习笔记——排序算法(一):冒泡排序

一、冒泡排序 1、介绍 通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 优化: 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在 排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。(这里说的优化,可以在冒泡排 序写好后,在进行) 2、算法分析 (1)比较相邻的元素。如果第一个比第二个大,就交换它们两个;

最初的模样 406

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

数据结构与算法-学习笔记(7)-冒泡排序

菜鸟一枚, 刚刚学习数据结构与算法, 为了加深理解, 所以与同学们分享学习过程。 今天学习的是, 冒泡排序!!! 冒泡排序:两两相邻进行比较,若返序,则交换,直到没有反序 那么让代码说话: #include <stdio.h> #include <stdlib.h> //ctrl+shift+c 注释多行 //ctrl+shift+x 取消注释 void bubos...

qq_43765237的博客 244

数据结构与算法学习笔记(八)冒泡排序

0x01 冒泡排序 冒泡排序(Bubble Sort)是一种交换排序。其基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就像水底下的气泡一样逐渐向上冒。 冒泡排序的优化:因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在 排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。 图解冒泡排序过程 ...

叶阳洋的博客 266

《数据结构与算法》学习笔记5 冒泡排序

public class ArrayBubble { private long[] a; private int size; public ArrayBubble(int num){ a=new long[num]; size=0; } public void insert(long value){ a[size]=value; size++;

qq1977261418的博客 310

算法与数据结构学习笔记(13):排序之冒泡排序

(12)break:作用于循环中,用于终止循环 continue:在循环中,终止本次循环,开始下一次循环 (13)switch语句 格式:switch(表达式){ case 常量1: 要执行的语句 break; case 常量2: 要执行的语句 break; case 常量3: 要执行的语句 break; } 执行流程:表达式和case后面的常量进行比较和哪个case后的常量相同,就执行哪个cas...

光脚小孩的博客 165

三郎数据结构算法学习笔记:冒泡排序及其简单优化

三郎数据结构算法学习笔记:冒泡排序及其简单优化基本思想优化图示结果源代码 基本思想 冒泡排序(Bubble Sorting)的基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,就象水底下的气泡一样逐渐向上冒。 优化 因为排序的过程中,各元素不断接近自己的位置,如果一趟比较下来没有进行过交换,就说明序列有序,因此要在 排序过程中设置一个标志 flag 判断元素是否进行过交换。从而减少不必要的比较。 (这里说的优化,可以在冒泡排

m0_51684972的博客 174

【 python 学习笔记 -- 数据结构与算法 】冒泡排序 Bubble sort

推荐一个可视化的网站 【 Visual Algo 】: URL= 'https://visualgo.net/en/sorting' 这个网站给出了各种排序算法的原理和过程,通过动态形式直观得展现出来。另外还给出了相关的pseudo-code,以及具体执行到code的哪一步。 【冒泡排序】   需要重复地走访需要排序的数列。走访过程中比较相邻两个items的大小,如果顺序不对,则交换两...

weixin_33699914的博客 127

7月12日Python数据结构与算法学习笔记——排序算法的稳定性、冒泡排序、选择排序、插入排序

本文为7月12日Python数据结构与算法学习笔记,分为四个章节: - 排序算法的稳定性; - 冒泡排序(Bubble Sort); - 选择排序(Selection Sort); - 插入排序(Insertion Sort)。

Ashen_0nee的博客 425

Java数据结构和算法第二章学习笔记(排序:冒泡排序、选择排序、插入排序)

Java数据结构和算法第二章学习笔记 冒泡排序: public void bubbleSort(){ int out,in; for(out=n-1; out>1; out--) for(in=0; in<out; in++) if(a[in]>a[in+1]) ...

weixin_42135811的博客 253

高薪java零基础学习笔记&Java数据结构和算法之冒泡排序_动力节点Java学院整理

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

zzpdljd1991的博客 272

【数据结构与算法】目录

大纲

长生的梦呓 819
上一篇: 学习笔记--数据结构与算法--分析排序算法
下一篇: 学习笔记-数据结构与算法-插入排序
null_null_bug
博客等级 码龄7年 72粉丝 71原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值