排序:冒泡排序算法分析

1.交换排序

基于“交换”的排序︰
根据序列中两个元素关键字的比较结果来对换这两个记录在序列中的位置。

交换排序包括冒泡排序快速排序

2.冒泡排序

1.算法原理
  1. 从后往前(或从前往后)两两比较相邻元素的值,
  2. 若为逆序(即 A [ i − 1 ] > A [ i ] A[i-1]>A[i] A[i1]>A[i]) ,则交换它们,直到序列比较完。
  3. 每一趟排序都可以使一个元素的移动到最终位置,已经确定最终位置的元素在之后的处理中无需再对比。
  4. 如果某一趟排序过程中未发生“交换”,则算法可提前结束。
  5. 称这样过程为“一趟”冒泡排序。总共需进行n-1趟冒泡。
2.代码实现

从后往前冒,每一次排头得到当前较小值。

//交换
void swap(int &a,int &b){int temp = a;a = b;b = temp;
}
//冒泡排序
void Bubblesort(int A[ ] ,int n){for(int i=0; i<n-1 ; i++){bool flag=false;//表示本趟冒泡是否发生交换的标志for(int j=n-1;j>i;j--)//一趟冒泡过程if(A[j-1]>A[j]) {//若为逆序swap(A[j - 1], A[j]);//交换flag = true;}if(flag==false)return;//本趟遍历后没有发生交换,说明表已经有席t}
}

只有 A [ j − 1 ] > A [ j ] A[j -1]>A[j] A[j1]>A[j]时才交换,因此算法是稳定的

3.算法性能分析

1.空间复杂度: O ( 1 ) O(1) O(1)

2.时间复杂度

  • 最好情况(有序):
    比较次数=n-1;交换次数=0;
    最好时间复杂度= O ( n ) O(n) O(n)
  • 最坏情况(逆序):
    比较次数= ( n − 1 ) + ( n − 2 ) + . . . + 1 = n ( n − 1 ) 2 (n-1)+(n-2)+...+1 = \frac{n(n-1)}{2} (n1)+(n2)+...+1=2n(n1)=交换次数;
    最坏时间复杂度= O ( n 2 ) O(n^2) O(n2)

平均时间复杂度= O ( n 2 ) O(n^2) O(n2)

4.适用性

顺序表、链表都可以。

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

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

相关文章

【Java 基础篇】Java Stream 流详解

Java Stream&#xff08;流&#xff09;是Java 8引入的一个强大的新特性&#xff0c;用于处理集合数据。它提供了一种更简洁、更灵活的方式来操作数据&#xff0c;可以大大提高代码的可读性和可维护性。本文将详细介绍Java Stream流的概念、用法和一些常见操作。 什么是Stream…

API网关是如何提升API接口安全管控能力的

API安全的重要性 近几年&#xff0c;越来越多的企业开始数字化转型之路。数字化转型的核心是将企业的服务、资产和能力打包成服务&#xff08;服务的形式通常为API&#xff0c;API又称接口&#xff0c;下文中提到的API和接口意思相同&#xff09;&#xff0c;从而让资源之间形…

怎么在OPPO手机桌面上添加文字?便签桌面插件添加教程

很多年轻女性在选择手机时&#xff0c;都比较青睐于设计时尚靓丽、轻薄且续航好、系统流畅、拍照清晰的OPPO手机&#xff0c;并且OPPO为不同的用户提供了高中低不同价格档位的手机型号&#xff0c;能够满足绝大多数女性消费者的使用需求。 不过有不少OPPO手机用户表示&#xf…

hot100-哈希

1. 两数之和 给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 你可以假设每种输入只会对应一个答案。但是&#xff0c;数组中同一个元素在答案里不能重复出现。 你可以按…

关于项目、项目集、项目组合以及运营管理之间的关系

什么是项目&#xff1f; 【项目】这个名词&#xff0c;其实各位一点都不陌生&#xff0c;各位从小到大在各种报章杂志&#xff0c;甚至是每晚的新闻播报里面&#xff0c;每每都会看到或是听到【项目】这个词语&#xff0c;甚至在各位进入大学&#xff0c;或是研究生的阶段里就…

AttributeError: type object ‘mmap.mmap‘ has no attribute ‘ACCESS_READ

在使用mmap时&#xff0c;运行项目&#xff0c;出现了报错&#xff1a;AttributeError: type object ‘mmap.mmap’ has no attribute ACCESS_READ 源代码是这样的&#xff1a; with mmap(f.fileno(), lengthfile_size, accessmmap.ACCESS_READ) as data 此时我的头文件引用是…

基于人脸5个关键点的人脸对齐(人脸纠正)

摘要&#xff1a;人脸检测模型输出人脸目标框坐标和5个人脸关键点&#xff0c;在进行人脸比对前&#xff0c;需要对检测得到的人脸框进行对齐&#xff08;纠正&#xff09;&#xff0c;本文将通过5个人脸关键点信息对人脸就行对齐&#xff08;纠正&#xff09;。 一、输入图像…

RabbitMQ用户命令_策略_日志

RabbitMQ相关安装 Centos离线安装RabbitMQ并开启MQTT Docker安装rabbitMQ RabbitMQ集群搭建和测试总结_亲测 Docker安装RabbitMQ集群_亲测成功 RabbitMQ创建管理员命令 #查看当前用户命令&#xff1a; rabbitmqctl list_users#创建用户和密码 rabbitmqctl add_user admin…

Zookeeper(window)安装

1、规划 版本选定 :3.4.6 安装目录 : D:\\zookeeper-3.4.6 数据目录 : D:\\zookeeper-3.4.6\\zk_data 日志目录 :D:\\zookeeper-3.4.6\\log 2、下载

ORB-SLAM2实时稠密地图,解决运行报段错误(核心已转储)运行数据集时出现段错误,出现可视化界面后闪退(添加实时彩色点云地图+保存点云地图)

高翔的稠密建图仓库 1. git clone https://github.com/gaoxiang12/ORBSLAM2_with_pointcloud_map.git 2. 去ORB SLAM2里拷贝Vocabulary到/home/cgm/ORBSLAM2_with_pointcloud_map/ORB_SLAM2_modified文件夹下 3. 删除一些build文件夹 删除ORB_SLAM2_modified/Thirdparty/DB…

哈希 -- 位图、布隆过滤器、海量数据处理

目录 一、位图1.1 经典题目1.2 位图概念1.3 位图的应用1.4 关于位图的三个经典问题 二、布隆过滤器2.1 布隆过滤器的提出2.2 布隆过滤器的概念2.3 布隆过滤器的插入2.4 布隆过滤器的查找2.5 布隆过滤器删除2.6 代码实现2.7 布隆过滤器的优点2.8 布隆过滤器的缺陷2.9 布隆过滤器…

TongWeb8下应用忙碌线程监控

问题 &#xff1a; 在系统运行过程中发现TongWeb进程占用CPU过高&#xff0c;需要分析是应用哪里引起的问题。 分析过程(仅限Linux环境)&#xff1a; 1. 通过top命令查看TongWeb的java进程占用的CPU情况。 查看误区&#xff1a;不要以为java进程CPU占到398%就是高&#xff0…

MySQL学习笔记12

MySQL 查询语句&#xff1a; 1、查询五子句&#xff1a;&#xff08;重点&#xff09; mysql> select */字段列表 from 数据表名称 where 子句 group by 子句 having 子句 order by 子句 limit 子句; 1&#xff09;where 子句&#xff1b;条件筛选。 2&#xff09;group…

golang 通过案列感受下内存分析

package main // 声音文件所在的包&#xff0c;每个go文件必须有归属的包 import ("fmt" )// 引入程序中需要用的包&#xff0c;为了使用包下的函数&#xff0c;比如&#xff1a;Printinfunc exchangeNum(num1 int, num2 int){var t intt num1num1 num2num2 t }…

Elasticsearch:什么是向量和向量存储数据库,我们为什么关心?

Elasticsearch 从 7.3 版本开始支持向量搜索。从 8.0 开始支持带有 HNSW 的 ANN 向量搜索。目前 Elasticsearch 已经是全球下载量最多的向量数据库。它允许使用密集向量和向量比较来搜索文档。 矢量搜索在人工智能和机器学习领域有许多重要的应用。 有效存储和检索向量的数据库…

Cortex-M3/M4之SVC和PendSV异常

一、SVC异常 SVC(系统服务调用&#xff0c;亦简称系统调用)用于产生系统函数的调用请求。例如&#xff0c;操作系统不让用户程序直接访问硬件&#xff0c;而是通过提供一些系统服务函数&#xff0c;用户程序使用 SVC 发出对系统服务函数的呼叫请求&#xff0c;以这种方法调用它…

多台服务器sessionId共享

目录 多台服务器sessionId共享解决方案&#xff1a;ASP.NET Core 参考代码(NET 7):登录处理登录&#xff08;请求&#xff09;过滤器过滤器使用BaseController 多台服务器sessionId共享 session id是服务器首次与浏览器创建连接时&#xff0c;生成的id值&#xff0c;存入浏览器…

2023华为杯数学建模D题第三问-碳排放路径优化(能源消费结构调整的多目标优化模型构建详细过程+模型假设(可复制))

1.碳排放约束下&#xff08;人为干预按时碳达峰与碳中和的基准情景&#xff09;能源消费结构多目标优化模型构建 1.1基本假设 本文的模型设计主要基于以下几个基本假设&#xff1a; &#xff08;1&#xff09;能源消费结构调整的根本驱动要素&#xff0c;是对投资耗费的最小化…

威胁的数量、复杂程度和扩散程度不断上升

Integrity360 宣布了针对所面临的网络安全威胁、数量以及事件响应挑战的独立研究结果。 数据盗窃、网络钓鱼、勒索软件和 APT 是最令人担忧的问题 这项调查于 2023 年 8 月 9 日至 14 日期间对 205 名 IT 安全决策者进行了调查&#xff0c;强调了他们的主要网络安全威胁和担忧…

i2c-tools:让硬件通信更简单

简介&#xff1a;IC&#xff08;Inter-Integrated Circuit&#xff09;&#xff0c;IC 是一种常用的硬件通信协议&#xff0c;用于连接各种内部设备&#xff0c;比如传感器、显示器或其他控制器。SMBus&#xff08;System Management Bus&#xff09;是 IC 的一个变种&#xff…