拓展冒泡排序

news2024/11/18 1:30:05

冒泡排序

请添加图片描述

冒泡排序的动态演示

比较相邻的元素。

1,如果第一个比第二个大(升序),就交换他们两个。
2,对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。这步做完后,
最后的元素会是最大的数。
3. 针对所有的元素重复以上的步骤,除了最后一个。
4, 持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较为
止。

冒泡排序动态演示的网址:https://www.bilibili.com/video/BV1qY4y1h7Lz/

2 排序思路
先给大家放几张图,让大家感受下冒泡排序是怎么排序的:
比如我现在有一组乱序的数据:
11 9 13 6 8 5,希望通过冒泡排序后得到从小到大按顺序排列的数据
首先开始第1轮的第1次比较:11与9进行比较,11>9,所以互换位置:
在这里插入图片描述

这是11与9互换位置后的结果,红线标注的就是当前正在比较的两个数据:

在这里插入图片描述

第1轮的第2次比较:11与13进行比较,11<13,符合顺序,无需互换位置:

在这里插入图片描述

第1轮的第3次比较:6与13进行比较,13>6,不符合顺序,这是互换位置后的结果:

在这里插入图片描述

第1轮的第4次比较:8与13进行比较,13>8,不符合顺序,这是互换位置后的结果:

在这里插入图片描述

第1轮的第5次比较:5与13进行比较,13>5,不符合顺序,这是互换位置后的结果:
目前第一轮所有元素都参与了比较,结果:9 11 6 8 5 13

在这里插入图片描述

第2轮的第1次比较:9与11进行比较,9<11,符合顺序,无需互换位置:

在这里插入图片描述

第2轮的第2次比较:11与6进行比较,11>6,不符合顺序,这是互换位置后的结果:

在这里插入图片描述

第2轮的第3次比较:11与8进行比较,11>8,不符合顺序,这是互换位置后的结果:

在这里插入图片描述

第2轮的第4次比较:11与5进行比较,11>5,不符合顺序,这是互换位置后的结果:
第二轮结果:9 6 8 5 11 13

在这里插入图片描述

第3轮的第1次比较:9与6进行比较,9>6,不符合顺序,这是互换位置后的结果:

在这里插入图片描述

第3轮的第2次比较:9与8进行比较,9>8,不符合顺序,这是互换位置后的结果:

在这里插入图片描述

第3轮的第3次比较:9与5进行比较,9>5,不符合顺序,这是互换位置后的结果:
第三轮结果:6 8 5 9 11 13

在这里插入图片描述

第4轮的第1次比较:6与8进行比较,6<8,符合顺序,无需互换位置:

在这里插入图片描述

第4轮的第2次比较:5与8进行比较,8>5,不符合顺序,这是互换位置后的结果:
第四轮结果:6 5 8 9 11 13

在这里插入图片描述

第5轮的第1次比较:6与5进行比较,6>5,不符合顺序,这是互换位置后的结果:

在这里插入图片描述

第五轮结果:5 6 8 9 11 13,到目前为止,排序完成

冒泡排序动态演示的网址:https://www.bilibili.com/video/BV1qY4y1h7Lz/

冒泡排序的代码实现

package com.tedu;

public class TestBubbleSort {

    public static void main(String[] args) {
        int[] arr = {6,9,2,9,1};
        //目标:从小到大
        //冒泡排序的轮数 = 元素的总个数 - 1
        //轮数是多轮,每一轮比较的次数是多次,需要用到双重循环,即循环嵌套
        //外循环控制 轮数,内循环控制每一轮的比较次数和过程
        for(int i=1; i<arr.length; i++){ //循环次数是 arr.length-1 次/轮

            for(int j=0; j<arr.length-i; j++){
                //希望的是 arr[j] < arr[j+1]
                if(arr[j] > arr[j+1]){
                    //交换 arr[j]与 arr[j+1]
                    int temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                   //到这里元素的顺序已经排序完成,下一步我们通过遍历查看排序后的结果
                }
            }
        }
        //完成排序,遍历结果
        for(int i=0; i<arr.length; i++){
            System.out.print(arr[i]+" ");
        }
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

解决Antd Tree组件,二次点击时不取消选中,保持高亮

一、问题概述 ant design 提供的 Tree树组件 支持点击高亮树节点&#xff0c;再次点击取消高亮。 默认效果如下&#xff1a; 然而大多数业务场景下&#xff0c;我们希望多次点击同一个节点不会取消他的选中效果。 二、解决方案 监听onSelect时间&#xff0c;并使用select…

PG系列1:windows下安装PG15

文章目录 一. 下载PG二. 开始安装PG2.1 开始安装2.2 验证 一. 下载PG 官网地址: https://www.postgresql.org/选择Download 选择windows Download the installer 点击下载 二. 开始安装PG 2.1 开始安装 这个安装很简单&#xff0c;直接下一步即可&#xff0c;此处…

5.Java内存模型之JMM

Java内存模型之JMM 5.1 先从大场面试开始 你知道什么是Java内存模型JMM吗&#xff1f; JMM和volatile他们两个之间的关系&#xff1f; JMM没有那些特征或者它的三大特征是什么&#xff1f; 为什么要有JMM&#xff0c;它为什么出现&#xff1f;作用和功能是什么&#xff1f; hap…

智能井盖:智慧城市下的井盖管理新模式

随着全球城市化进程的加快&#xff0c;智慧城市的概念越来越受到关注。井盖作为城市的基础设施之一&#xff0c;井盖的安全管理成为城市管理者关注的重要问题。传统的井盖管理方式面临诸多挑战&#xff0c;如人力成本高、巡检效率低、隐患难以发现等。随着智慧城市的发展&#…

leangoo领歌敏捷工具中,如何快速查看项目内所有任务卡片

项目管理员能不能快捷的查看整个项目内的所有任务&#xff1f; 能不能快捷查看项目内某一个成员的所有任务&#xff1f; 能不能快捷的在项目内通过一些条件选择查看任务&#xff1f; 可以导出项目内某一个人的所有任务吗&#xff1f;方便做一些统计 等等... 这些现在Leang…

路径规划 | 图解Informed RRT*算法(附ROS C++/Python/Matlab仿真)

目录 0 专栏介绍1 Informed RRT*原理2 Informed RRT*流程3 ROS C实现4 Python实现5 Matlab实现 0 专栏介绍 &#x1f525;附C/Python/Matlab全套代码&#x1f525;课程设计、毕业设计、创新竞赛必备&#xff01;详细介绍全局规划(图搜索、采样法、智能算法等)&#xff1b;局部…

超全、超详细的Redis学习笔记总结

❤ 作者主页&#xff1a;欢迎来到我的技术博客&#x1f60e; ❀ 个人介绍&#xff1a;大家好&#xff0c;本人热衷于Java后端开发&#xff0c;欢迎来交流学习哦&#xff01;(&#xffe3;▽&#xffe3;)~* &#x1f34a; 如果文章对您有帮助&#xff0c;记得关注、点赞、收藏、…

「2024」预备研究生mem-消序核心原则

一、消序 二、核心原则 相同备选池 三、练习题

数据库索引简介及优化

索引 1.索引简介 1.1 概念 MySQL官方对索引的定义为&#xff1a;索引&#xff08;Index&#xff09;是帮助MySQL高效获取数据的数据结构。索引的本质&#xff1a;索引是数据结构。 注&#xff1a;在数据之外&#xff0c;数据库系统还维护着满足特定查找算法的数据结构&…

OOM 原因及解决方案

1. 什么是OOM 1.1 OOM 含义: OOM, 全称 “Out Of Memory”, 意思是 “内存用完了”。 它来源于 java.lang.OutOfMemoryError。 1.2 为什么会出现OOM: 官方介绍为当 JVM 因为没有足够的内存来为对象分配空间并且垃圾回收器也已经没有空间可回收时, 就会抛出 java.lang.OutOfMemo…

Windows命令行压缩gz文件

tar -help win10好像是某个版本号之后&#xff0c;才能使用tar命令&#xff0c;所以想要直接在win10上面使用tar命令&#xff0c;就更新系统吧。 按 winr 键后输入 cmd 打开命令行终端&#xff0c;输入 tar -help 命令&#xff0c;如下所示。 tar -cf xxx.tar.gz ./xxx //是…

【电路】电路与电子技术基础 课堂笔记 第11章 数制、编码与逻辑代数

11.1 数制与数制转换 11.2 二进制数的编码 1. 二-十进制&#xff08;BCD&#xff09;码 把十进制数的每一位用多位二进制数表示&#xff0c;称为二进制编码的十进制数&#xff0c;简称BCD编码。 具有二进制数的形式&#xff0c;又具有十进制数的特点。 2. 8421码 3. 2421码…

老板谈上4休3工作制1个月后效果:不建议新公司模仿

大家好&#xff01;我是老洪&#xff01; 刚看到一则关于上4休3工作制的资讯&#xff0c;聊两句。 媒体是这样报道的。 一位长沙公司的老板在实施上4休3工作制一个月后表示&#xff0c;不建议新公司模仿。 他指出&#xff0c;个别员工的自律问题在上四休三后暴露出来&#xff0…

人工智能体系和实战指南

前言 人工智能是一个庞大的研究领域。虽然我们已经在人工智能的理论研究和算法开发方面取得了一定的进展&#xff0c;但是我们目前掌握的能力仍然非常有限。机器学习是人工智能的一个重要领域&#xff0c;它研究计算机如何模拟或实现人类的学习行为&#xff0c;以获取新的知识或…

RetinaNet网络介绍

前言 上一篇博文我们介绍了Focal Loss&#xff0c;原理也比较简单&#xff0c;有不了解的小伙伴可以先跳转到之前的博文了解一下。Focal Loss介绍。这篇博文我们来看下Focal Loss的出处&#xff1a;Focal Loss for Dense Object Detection&#xff0c;这篇论文提出了RetainNet之…

Netty之ByteBuf解读

目录 创建简单使用 直接内存vs堆内存 池化vs非池化 组成 常用写入方法 扩容 读取 retain&release slice 其他拷贝方式 duplicate& copy&CompositeByteBuf Unpooled netty中用于进行信息承载和交流的类叫做ByteBuf&#xff0c;从名字可以看出这是Byte的缓…

【025】C++对C的扩展之引用(reference)详解

C对C的扩展 引言一、struct类型增强二、bool类型关键字三、引用&#xff08;reference&#xff09;3.1、普通变量的引用3.2、数组的引用3.3、指针变量的引用3.4、函数的引用3.5、引用作为函数的参数3.6、引用作为函数的返回值类型3.7、常引用 四、引用的典型应用场景五、引用在…

3D绘制爱心(python)

目录 图像绘制代码结果显示参考 图像绘制代码 import time import numpy as np import matplotlib.pyplot as pltclass Guess:def __init__(self, bbox(-1.5, 1.5), resolution50, lines20, scale1.2) -> None:"""bbox: 控制画格的大小resolution: 控制爱心…

6. WebGPU 纹理(Textures )

在本文中&#xff0c;我们将介绍纹理的基础知识。在之前的文章中&#xff0c;我们介绍了 将数据传递到着色器的主要方法&#xff0c;它们是inter-stage variables, uniforms, storage-buffers, and vertex-buffers。将数据传递到着色器的最后一种主要方式是纹理。 纹理通常表示…

北宋文坛伯乐的传承关系

北宋的科学文化水平达到了古代最高峰&#xff0c;文化繁荣&#xff0c;名人辈出&#xff0c;涌现出了一大批大文豪&#xff0c;文坛领袖&#xff0c;词派宗祖等大师级的人物。例如&#xff0c; “宰相词人”晏殊、“两宋三百年来第一人”的范仲淹、“唐宋散文八大家”中的欧阳修…