算法——冒泡排序

C++算法之冒泡排序 C++算法之冒泡排序 文章目录C++算法之冒泡排序一、基本思想二、步骤冒泡排序冒泡过程三、代码四、复杂度分析 一、基本思想 试想一下,如果在上体育课的时候,通常学生都会随意站成一列,但是体育老师会帮忙调整学生的站位使得最终顺序是按照身高排序的。那么,回忆一下体育老师是如何调整顺序的呢? 假设体育老师想将学生从左到右按照身高从矮到高排序。通常情况下,他会从左到右扫视学生的身高。如果左边有一个同学,个子比右边的同学高,他就要将其进行调整。具体调整方法是: 如果一个同学比他右边的同学高,就让这两个同学交换位置 阅读详情

问题描述:今天项目中涉及到一段逻辑,灵机一动,好像冒泡排序,安排上。

先来一行小字:很多朋友为了应对面试强行去记忆各种算法的实现代码。几个月后。。。算法? 那是啥?

算法更像是一段思路,你不理解,写的再熟也不一定能够应用到。

应用场景:几个混乱的元素——按照一定规则站好待命。

冒泡排序:第一个元素起,相邻元素相比,大的往上冒。依次一个个排好。

代码实现:

  1. 定义一组元素  {1,6,7,3,9,4}
  2. 先来个双重循环(这种比法第一想到的应该就是双重循环把,没想到的去好好看下乘法表)
            int[] arr = {1, 6, 7, 3, 9, 4};
            for (int i = 0; i < arr.length - 1; i++) {
                for (int j = 0; j < arr.length - 1; j++) {
    
                }
            }

     

  3. 逻辑判断,大的交换位置,往上(右)冒     
        if (arr[j] > arr[j + 1]) {
            int temp = arr[j];
            arr[j] = arr[j + 1];
            arr[j + 1] = temp;
         }
                                                           
  4. 执行结果  {1,3,4,6,7,9} 任务完成               

 编码习惯:测试分析,优化可能性

在第一层比较完后,已经将最上面的第一个排好了——第一层排好1个。

在第二层比较完后,已经将最上面的第二个元素排好了——第二层排好2个。

。。。。。。

结论:排第2个元素时,没有必要再与排好的第一个元素进行比较。

优化代码:

            int[] arr = {1, 6, 7, 3, 9, 4};
            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]) {
                        int temp = arr[j];
                        arr[j] = arr[j + 1];
                        arr[j + 1] = temp;
                    }
                }
            }

 

思考:根据观察。{6,7}其实已经是非混乱元素了,是否可以再做优化呢。

勤动一动手,常动一动脑,多记一记笔记。

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

相关推荐

模块学习(一)——编码电机

编码电机测速

qq_51406846的博客 7912

java编程题:用Java实现一个冒泡排序算法

/** * java编程题:用Java实现一个冒泡排序算法 */ public class Test { public static void main(String[] args) { int[] sortNum = {12,33,28,86,15,62,9,38}; //定义数组 bubbleSort3(sortNum); //开始排序 System.out

一转身就是一辈子 2万+

51单片机也能玩转信号发生器?手把手教你用DAC0832和LM358输出四种标准波形

本文详细介绍了如何使用51单片机和DAC0832芯片搭配LM358运放,自制低成本信号发生器,实现正弦波、矩形波、三角波和锯齿波四种标准波形的输出。从硬件选型、电路设计到编程实现,手把手教你完成这一实用电子项目,总成本不到50元,适合电子爱好者和学生实践。

weixin_30530939的博客 553

Java简单实现冒泡排序算法

java冒泡排序算法 java基础算法 java实现冒泡排序算法 依此比较相邻两个数,小的数放在前面,大的数放在后面 - 第一趟比较第1,2个数,小前大后;比较第2,3个数,小前大后,直至比较到把其中最大数放到最右端 - 第一趟之后,最后一个一定最大,比较第二趟,第二趟第一个不参与,把第二大的数放到倒数第二个位置 - 第二趟之后,倒数第二个数第二大,第三趟最后两个数不参与 - 依此类推,每一趟比较次数-1

唐_方的博客 2374

Nuclei漏洞扫描:从零到精通的Windows实战指南

本文详细介绍了Nuclei漏洞扫描工具在Windows平台上的安装与使用教程,从基础安装到高级实战技巧全面覆盖。通过具体案例展示如何利用Nuclei的模板库快速检测常见漏洞,并提供自定义POC开发指南,帮助安全从业者高效开展漏洞扫描工作。

weixin_28683689的博客 251

Windows(Win10、Win11)本地部署开源大模型保姆级教程

最近开源大模型可谓闹的沸沸扬扬,尤其是Microsoft开源的和Meta开源的llama3 70b,评测都已经接近了的水平。鉴于还有很多同学不会在上部署和使用本地模型,因此我们出一期保姆级教程。本文讲述了如何在上本地部署大模型。从最基础的软件安装到环境配置都进行了截图展示,希望对非计算机的同学也有所帮助。AI时代我们每个人都必须要掌握一些AI知识,相信不断学习的你一定不会被AI淘汰。这只是开始,后面我们还有很多工作要做,尤其是提示词和智能体。

AIGIS的博客 3万+

冒泡排序多种实现方法

冒泡排序总是搞错他的临界值,最开始在书上看的的是这种    int arr[10] = {2,4,8,3,1,5,9,6,7,0};     int i , j;     int temp;     for(i = 0 ; i &lt; 9 ; i++){         for(j = i+1 ; j &lt; 10 ; j++){             if(arr[i] &gt; arr[...

zhou_tomcat的博客 1834

基于WebGL架构的3D可视化平台—平面图导航(一)

前言 利用CampusBuilder来搭建自己的虚拟世界过程有这样一个问题:如何快速聚焦到虚拟场景的某一位置。当然我们可以创建几个按钮对应查找我们需要去的位置(参照物)并聚焦,但是按钮并不是很炫酷也不能很好的反馈给我们一些信息。接下来我们就用平面导航图来解决这一问题。 第一步:使用CampusBuilder搭建模拟场景,CampusBuilder操作简单,分分钟就可以上手。 ...

nioooom的博客 4165

请写一个冒泡排序,实现{5,7,3,9,2}从小到大排序

@Test public void test(){ int[] arr={5,7,3,9,2}; for (int i = 0; i <arr.length-1 ; i++) { for (int j = 0; j < arr.length-1; j++) { if (arr[j]>arr[j+1]){ ...

qq_42564058的博客 2173

工业级Modbus ASCII实时监控系统(WinForms完整实现)

本文介绍了一个基于WinForms的工业级Modbus ASCII实时监控系统实现方案。该系统采用经典工控界面布局,包含串口配置、数据采集控制和实时数据显示三大区域。核心功能包括:串口通信参数设置、Modbus从站地址配置、寄存器数据采集、实时数据表格展示和趋势图绘制。系统通过ModbusAsciiClient类实现通信核心,采用定时器轮询机制采集数据,支持最多100个数据点的历史趋势显示。界面设计注重用户体验,配置区位于左侧,主显示区在右侧,底部为状态和日志区,符合工业控制系统的操作习惯。代码示例展示了窗

这里只有干货:从 Modbus 通信到 MES 对接,从 YOLO 训练到工控机部署,带你搞定工业软件开发全流程。 279

杰理AC695N系列芯片 LED7数码管使用教程

杰理AC695N数码管使用摘要 本教程介绍了杰理AC695N芯片驱动LED7数码管的实现方法: 硬件配置:支持7/12/13脚三种数码管类型,详细说明了7脚数码管的标准段码定义和GPIO接线方式。 软件设置: 通过修改配置文件启用LED7功能 配置GPIO引脚映射(PORTC/PORTA组) 选择与硬件匹配的真值表 层次架构:包含硬件层、驱动层、UI层和应用层的完整设计,支持数字、字符和图标显示功能。 实现要点包括正确配置引脚类型、选择真值表,并通过UI风格设置为LED7模式。

qq_42014563的博客 1362

冒泡排序算法,C语言冒泡排序算法详解

冒泡排序是最简单的排序方法,理解起来容易。虽然它的计算步骤比较多,不是最快的,但它是最基本的,初学者一定要掌握。 冒泡排序的原理是:从左到右,相邻元素进行比较。每次比较一轮,就会找到序列中最大的一个或最小的一个。这个数就会从序列的最右边冒出来。 以从小到大排序为例,第一轮比较后,所有数中最大的那个数就会浮到最右边;第二轮比较后,所有数中第二大的那个数就会浮到倒数第二个位置……就这样一轮一轮地比较,最后实现从小到大排序。 比如对下面这个序列进行从小到大排序: 90 21 132 -58 34 第一轮:

小黑的博客 4万+

15、远程操作水下航行器(ROV)的非线性控制系统设计

本文探讨了远程操作水下航行器(ROV)的非线性控制系统设计,重点介绍了多变量PID控制、改进的PD控制和滑模控制三种方法。详细阐述了各控制策略的原理、建模与仿真过程,并通过对比分析其在稳态误差、振荡、抖振及跟踪效果等方面的性能表现。文章还提出了针对不同控制方法的优化建议,并给出了选择合适控制策略的决策流程,为ROV高精度运动控制提供了系统性解决方案。

sun99的博客 158

冒泡排序算法

本章介绍排序算法中的冒泡排序,重点讲解冒泡排序的思想。目录 1. 冒泡排序介绍 2. 冒泡排序图文说明 3. 冒泡排序的时间复杂度和稳定性 4. 冒泡排序实现 4.1冒泡排序C实现 4.2冒泡排序C++实现 4.3冒泡排序Java实现转载请注明出处:冒泡排序 - 如果天空不死 - 博客园更多内容:数据结构与算法系列 目录冒泡排序(Bubble Sort),又被称为气泡排序或泡沫排序。它是一种较简单的排序算法。它会遍历若干次要排序的数列,每次遍历时,它都会从前往后依次的比较相邻两个数的大小;如果前者比后者大,

生活需要深度 2860

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

冒泡排序和双向冒泡排序算法

冒泡排序算法应该算是每个开发者入门必学的基础算法,它逻辑清晰简单,代码实现也并不复杂,这里用自己的话语来总结一下。 (这些为了方便随便打开了一个node项目写的,其他Java ,PHP,C等也是一样的道理,算法讲究的只是一个思维模式,知道怎么去实现就行,不要死抠语言) 先说简单的普通冒泡排序: 冒泡排序既然是一个排序算法,那么它就一定是有一个循环排序的过程,其实它的原理很简单,就是两层for循环嵌...

whiteBearClimb的博客 2918

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

【算法基础】冒泡排序算法 - JAVA

冒泡排序是一种简单直观的比较排序算法。它重复地走访待排序的数列,依次比较相邻两个元素,如果顺序错误就交换它们,直到没有元素需要交换为止。

qq_38955667的博客 1283

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

冒泡排序算法_Python实现冒泡排序算法

黑客技术点击右侧关注,了解黑客的世界!Linux编程点击右侧关注,免费入门到精通!在计算机科学领域,排序算法有很多种,如:插入排序、快速排序、希尔排序、选择排序、堆排序、冒泡排序等排序算法。今天我们就使用Python实现一下冒泡排序算法。冒泡排序,是计算机科学领域较为简单的一种排序算法。冒泡排序算法的原理:比较相邻的元素,如果第一个比第二个大,就交换他们两个。对每一个相邻的元素做同样的操...

weixin_39791446的博客 136

冒泡排序的最优算法

冒泡排序是一种交换类排序的算法,比较常用,这里讨论下算法的优化。 // 待排序数组,升序排序 int[] arr = {2,6,4,5,3,7,8,11,14}; 算法一这是最简单也是最容易的写法,两层for循环,前后比较,大的交换。若数组长度为n,总共需要比较n*(n-1)/2次。public static void bubbleSort1(int[] arr) { int c

L的博客 5074

php编写冒泡排序算法_使用PHP完成冒泡排序算法

摘要:编程语言千千万,都离不开各种排序,比如比较典型的冒泡排序、快速排序、插入排序等,当然还有为之所动容的猴子排序、睡眠排序!!!本文只讲如何使用PHP实现冒泡排序的算法!原理分析本文使用的排序数组数据如下:$arr1=array(18,22,12,15,23,9);冒泡排序大致过程:大致遍历一个数组,在此过程中,将相邻的两个单元的值进行比较(俩俩大小相比,左边比右边大就对换位置)第一趟:如...

weixin_42412524的博客 1509

冒泡排序算法与改进的冒泡排序算法

对存放在数组的数据,按从前往后的方向进行多次扫描,当发现两个相邻的数据排序与要求的排序不相符时交换这两个数的位置,以从小到大的排序要求为例,这样较小的数据就会冒上来(称为冒泡排序)。每趟排序都会减少一个待排序的数,所以比较次数为n-i-1。从举例的结果可以看出,在进行完第四次排序后已经有序,所以不必继续进行下面的排序(继续进行排序,只进行数值的比较而数据不会移动)。i=1 第二趟排序: 0 1 2 6 8 4。i=3 第四趟排序: 0 1 2 4。...

m0_64529905的博客 1963
上一篇: Spring中的几个注入类注解
下一篇: 设计模式——工厂方法模式
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值