冒泡排序详细说明(内含动态演示图)

news2024/9/21 22:54:03

冒泡排序 

冒泡排序的核⼼思想就是:两两相邻的元素进行比较。冒泡排序是⼀种最基础的交换排序。

之所以叫做冒泡排序,因为每⼀个元素都可以像小⽓泡⼀样,根据⾃⾝⼤⼩⼀点⼀点向数组的⼀侧移动。

//⽅法1 
void bubble_sort(int arr[], int sz)//参数接收数组元素个数 
{
     int i = 0;
     for(i=0; i<sz-1; i++)
     {
         int j = 0;
         for(j=0; j<sz-i-1; j++)
         {
             if(arr[j] > arr[j+1])
             {    
                 int tmp = arr[j];
                 arr[j] = arr[j+1];
                 arr[j+1] = tmp;
             }
         }
     }
}
int main()
{
     int arr[] = {3,1,7,5,8,9,0,2,4,6};
     int sz = sizeof(arr)/sizeof(arr[0]);
     bubble_sort(arr, sz);
     for(i=0; i<sz; i++)
     {
         printf("%d ", arr[i]);
     }
     return 0;
}

//⽅法2 - 优化 
void bubble_sort(int arr[], int sz)//参数接收数组元素个数 
{
     int i = 0;
     for(i=0; i<sz-1; i++)
     {
         int flag = 1;//假设这⼀趟已经有序了 
         int j = 0;
         for(j=0; j<sz-i-1; j++)
         {
             if(arr[j] > arr[j+1])
             {
                 flag = 0;//发⽣交换就说明,⽆序 
                 int tmp = arr[j];
                 arr[j] = arr[j+1];
                 arr[j+1] = tmp;
             }
         }
     if(flag == 1)//这⼀趟没交换就说明已经有序,后续⽆序排序了 
         break;
     }
}
int main()
{
     int arr[] = {3,1,7,5,8,9,0,2,4,6};
     int sz = sizeof(arr)/sizeof(arr[0]);
     bubble_sort(arr, sz);
     for(i=0; i<sz; i++)
     {
         printf("%d ", arr[i]);
     }
     return 0;
}

 冒泡排序的特性总结

• 时间复杂度:O(N^2)

• 空间复杂度:O(1)

冒泡排序的效率太低,一般企业当中不会使用,只有教学意义。

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

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

相关文章

前端开发学习Docker记录01镜像操作

Docker相关命令 Demo安装nginx 先搜索然后拉取&#xff0c;然后查看images列表是不是拉取成功 docker search nginxdocker pull nginx特定某个版本&#xff0c;镜像名&#xff1a;版本号 docker images

这个神奇的网站提供各种图的R代码供您参考!

点击去每一个都有代码和数据 ggplot2高效实用指南 (可视化脚本、工具、套路、配色) 50个ggplot2可视化案例

国产游戏技术能否引领全球

目录 1.概述 1.1.面临的挑战 1.2.机遇 1.3.IT技术创新如何推动行业发展 2.技术解析 2.1.图形渲染技术 2.2.物理引擎 2.3.人工智能 (AI) 3.行业影响 3.1.对国内游戏开发行业的影响 3.2.IT人才需求变化 3.3.技术发展方向 4.未来展望 4.1. 发展前景 4.2. IT技术人员…

根据Scrum 敏捷开发过程开发一个基于 Web 的 Scrum 项目管理系统

目录 案例 【题目】 【问题 1】(10 分) 【问题 2】(6 分) 【问题 3】(9 分) 【答案】 【问题 1】解析 【问题 2】解析 【问题 3】解析 相关推荐 案例 阅读以下关于 Scrum 敏捷开发过程的叙述&#xff0c;在答题纸上回答问题 1 至问题 3。 【题目】 Scrum 是一个增量…

【使用 Python 进行截图】

如何使用 Python 进行截图&#xff1f; Python 是一种广泛使用的通用编程语言。它可以执行各种任务。其中之一就是进行截图。它提供了一个名为“pyautogui”的模块&#xff0c;可以用于截图。“pyautogui”截取的图片是 PIL&#xff08;Python 图像库&#xff09;格式&#xf…

2024中国国际大数据博览会:引领数字变革,共创未来辉煌

2024年中国国际大数据产业博览会&#xff0c;作为全球瞩目的数据领域盛事&#xff0c;再次汇聚全球目光于中国贵阳。 在这场以“数智共生&#xff1a;开创数字经济高质量发展新未来”为主题的盛会上&#xff0c;国家数据局与贵阳市政府共同携手&#xff0c;开启了一段旨在深化…

Java Web实战教程:如何一步步开发美容美发管理系统

✍✍计算机毕业编程指导师 ⭐⭐个人介绍&#xff1a;自己非常喜欢研究技术问题&#xff01;专业做Java、Python、微信小程序、安卓、大数据、爬虫、Golang、大屏等实战项目。 ⛽⛽实战项目&#xff1a;有源码或者技术上的问题欢迎在评论区一起讨论交流&#xff01; ⚡⚡ Java、…

全钢防静电地板和硫酸钙防静电地板的区别

全钢防静电地板和硫酸钙防静电地板都是机房装修会用到的地面材料&#xff0c;那么全钢防静电地板和硫酸钙防静电地板有什么区别呢&#xff1f; 就基材而言&#xff0c;全钢防静电地板底板采用深级拉伸钢板&#xff0c;面板采用硬质SPCC钢板&#xff0c;上下钢板冲压、点焊成型…

软考攻略/超详细/系统集成项目管理工程师/基础知识分享05

2.1.3 存储与数据库&#xff08;掌握&#xff09; 1、存储技术 存储分类根据服务器类型分为&#xff1a;封闭系统的存储和开放系统的存储 封闭系统主要指大型机等服务器&#xff1b;开放系统指基于包括麒麟、欧拉、UNIX、Linux等操作系统的服务器 开放存储的系统分为&#xff…

安科瑞ADW300系列4G电表可托管平台

徐赟杰 ADW300系列是利用物联网技术实现智能化计量和管理的智能仪表。 主要用于计量低压网络的三相有功电能&#xff0c;具有体积小、精度高、功能丰富等优点&#xff0c;并 且可选通讯方式多&#xff0c;可支持 RS485 通讯和 Lora、NB、4G、wifi 等无线通讯方式&#xff0c;增…

《python》poetry install下载缓慢,网络问题断开连接--poetry换源镜像下载+国内镜像

在使用打包工具poetry进行打包的是出现了一个问题就是&#xff0c;在使用poetry进行打包的时候出现了&#xff0c;连接断开这样的问题&#xff0c;这个问题是可以通过换源&#xff0c;通过国内的镜像来解决这个问题就可以了。 找到项目中的pyoroject。toml文件这个文件中写了一…

iptables笔记汇总

iptables笔记汇总 一、基础概念 iptables其实不是真正的防火墙,我们可以把它理解成一个客户端代理,用户通过iptables这个代理,将用户的安全设定执行到对应的”安全框架”中,这个”安全框架”才是真正的防火墙,这个框架的名字叫netfilternetfilter才是防火墙真正的安全框…

2024年cad转图片最清晰的方法,看到就是赚到

在工程设计、建筑绘图等领域&#xff0c;CAD图纸的清晰度直接关系到项目沟通的效果与准确性。但如何将复杂的CAD文件转化为易于分享、查看的高清图片呢&#xff1f;给大家分享几种高效且清晰的转换方法&#xff0c;一起来了解下吧。 方法一&#xff1a;迅捷CAD转换器 这款CAD工…

PMP考试提分必杀技,高手都在用这种方法!

PMP&#xff08;Project Management Professional 项目管理专业人士资格认证&#xff0c;由美国PMI发起&#xff0c;是全球最大的项目管理专业组织机构。它的目的是严格评估管理项目人员的知识技能&#xff0c;以确定其是否具备高品质的资格认证。今天我要分享一些关于PMP考试的…

WPF ToolkitMVVM IOC IServiceConllection

用微软自带的 IOC 需要安装 using Microsoft.Extensions.DependencyInjection; using System.Configuration; using System.Data; using System.Windows;namespace WpfApp3 {/// <summary>/// Interaction logic for App.xaml/// </summary>public partial class…

RK3568 Android 11 蓝牙BluetoothA2dpSink 获取用于生成频谱的PCM

Android 中的 A2DP Sink A2DP Sink 在 Android 系统中主要用于 接收 其他蓝牙设备&#xff08;如手机、平板、电脑等&#xff09;发送过来的 高质量的立体声音频。简单来说&#xff0c;它让你的 Android 设备可以充当一个 蓝牙音箱 或 耳机 的角色。 核心功能&#xff1a; 接…

开放式耳机哪个品牌实用?南卡、漫步者、小米 三款爆火单品横评

开放式耳机因为设计新颖&#xff0c;不塞进耳朵&#xff0c;受到了很多人的喜爱。但是&#xff0c;市面上一些开放式耳机音质和佩戴体验一般&#xff0c;质量也参差不齐&#xff0c;这让消费者陷入了选择困难。这些品质低下的产品既无法提供优秀的音频享受&#xff0c;长期佩戴…

midwayjs 框架使用 rabbitmq 消息延迟

插件rabbitmq_delayed_message_exchange是RabbitMQ官方提供的一种用于实现延迟消息的解决方案。该插件将交换机类型扩展至x-delayed-message&#xff0c;这种类型的交换机能够将消息暂时挂起&#xff0c;直到设定的延迟时间到达&#xff0c;才将消息投递到绑定的队列中。这一特…

vue3插件原理

概览 vue3的生态圈提供了许多方便的插件或者工具&#xff0c;比如pinia、vue-router和Element Plus等&#xff0c;使用插件的写法一般如下: const app createApp(App);app.use(pinia); app.use(router); app.use(ElementPlus, { locale }); // 第二个参数:{locale} 为传给插…

milvus多个Querynode,资源消耗都打在一个节点上

milvus 查询时的原理 当读取数据时&#xff0c;MsgStream对象在以下场景中创建&#xff1a; 在 Milvus 中&#xff0c;数据必须先加载后才能读取。当代理收到数据加载请求时&#xff0c;会将请求发送给查询协调器&#xff0c;查询协调器决定如何将分片分配到不同的查询节点。…