冒泡排序代码及时间空间复杂度

算法——冒泡排序、选择排序、插入排序的算法思想+C++代码实现+时间空间复杂度 一、冒泡排序 1、排序思想:假设对N个数进行排序,他们的位置分别是0、1、2....、N-1。首先比较0和1位置上的元素,如果0位置上的元素大于1位置上的元素,则交换两个位置上的元素,否则不做调整;接着比较1位置上和2位置上的元素,如果1位置上的元素大于2位置上的元素,则交换两个位置上的元素,否则不交换;..........;最后比较N-2和N-1位置上的元素,如果N-2位置上的元素大于N-1位... 阅读详情

冒泡排序是一种基本的排序算法,它通过多次交换相邻元素的位置来将一个数组按照升序或降序进行排序。以下是冒泡排序的代码示例以及时间和空间复杂度分析,希望对大家有所帮助。北京木奇移动技术有限公司,专业的软件外包开发公司,欢迎交流合作。

冒泡排序的代码示例(升序排序):

def bubble_sort(arr):
n = len(arr)
for i in range(n):
# 标记是否发生交换,若未发生则说明已经有序,可提前退出
swapped = False

# 每次循环将最大元素冒泡到末尾
for j in range(0, n-i-1):
if arr[j] > arr[j+1]:
# 交换相邻元素
arr[j], arr[j+1] = arr[j+1], arr[j]
swapped = True

# 如果一轮循环未发生交换,说明已经有序,可提前退出
if not swapped:
break
# 示例
arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("排序后的数组:", arr)

时间复杂度分析:

冒泡排序的时间复杂度取决于数组中元素的个数(n)。最坏情况下,冒泡排序需要进行 n-1 轮比较和交换。每一轮比较需要比较 n-i-1 次,其中 i 是当前轮次。因此,最坏情况下的时间复杂度是 O(n^2)。在最好的情况下,如果输入数据已经是有序的,冒泡排序的时间复杂度是 O(n)。

空间复杂度分析:

冒泡排序是一种原地排序算法,它不需要额外的空间来存储数据,因此其空间复杂度是 O(1),即常数级别的空间消耗。

总结:冒泡排序虽然容易理解和实现,但由于其最坏情况下的时间复杂度为 O(n^2),在大规模数据集上性能较差。通常情况下,更高效的排序算法,如快速排序和归并排序,更常被使用。

bcftools学习笔记(一) 欢迎关注"生信修炼手册"!本篇主要介绍index, view, query, sort, reheader这五个命令。1. indexindex命令用于对VCF文件建立索... 阅读详情

相关推荐

利用Python暴力破解邻居家WiFi密码

如觉得博主文章写的不错或对你有所帮助的话,还望大家多多支持呀!

weixin_45841831的博客 6万+

排序算法介绍(二)冒泡排序

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

liuxiaofeng的博客 1205

EEGLAB+ERPLAB实战:从.cnt文件到情绪ERP差异波,一份避坑指南

本文详细介绍了使用EEGLAB和ERPLAB处理Neuroscan的.cnt格式脑电数据的全流程,从数据导入、预处理到情绪ERP差异波生成。重点解决了采样率验证、事件标记检查、重参考选择、滤波策略与ICA组合等实操难题,并提供了情绪图片ERP研究中P1、EPN和LPP成分的分析技巧,帮助研究者避免常见错误,提升数据处理效率。

weixin_26795617的博客 266

冒泡排序(空间复杂度,时间复杂度,稳定性分析,代码,图解)

对于算法的稳定性而言,我们先假设,在此时序列中有两个相邻的值为 13 的元素(其它重复元素同理,不是相邻的话在冒泡的过程中也会有相邻的状态),根据判断条件 i > j , 且 A[i] == A[j] ,在做冒泡排序的时候,13 和 另外一个13之间不会发生位置的交换;冒泡排序法是把N个数通过N-1轮排序,升序排序中大的数往下沉,小的数往上浮,降序排序中小的数往下沉,大的数往上浮。冒泡排序需要进行n-1趟冒泡,每一趟需要比较n-i次,最坏情况下需要交换n-1次,故时间复杂度为。所以,冒泡排序是一种。

我的博客 4163

【零基础入门unity游戏开发——unity3D篇】unity CharacterController 3D角色控制器最详细的使用介绍,并实现俯视角、第三人称角色控制(附项目源码)

【unity小技巧】unity最完美的CharacterController 3d角色控制器,实现移动、跳跃、下蹲、奔跑、上下坡、物理碰撞效果,复制粘贴即用但是我发现很多人还是不理解,都跑来私信问我,所以决定重新做一个更加详细且简单控制器,主要是实现俯视角和第三人称角色控制。添加一个胶囊体,添加Character Controller组件,记得删除Capsule Collider组件,因为Character Controller自带了碰撞,所以不需要Character Controller参数介绍。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 5023

AI 大模型接口太零散?自建私有模型管理平台统一整合,管理使用超方便!(支持飞牛nas、群晖nas等服务器快速部署)

面对多种 AI 大模型接口难统一、管理繁琐的问题🤯,本文分享一款超实用开源网关工具⚡,可聚合各大模型、自动转接口、支持可视化管理,Docker 一键部署,大幅降低开发与维护成本🚀

XiaoqiangClub的博客 266

选择排序、冒泡排序 包括 代码 时间复杂度 空间复杂度 稳定性 是否能对代码进行提升

假设我们现在排序ar[]={1,2,3,4,5,6,7,8,10,9}这组数据,按照上面的排序方式,第一趟排序后将10和9交换已经有序,接下来的8趟排序就是多余的,什么也没做。所以我们可以在交换的地方加一个标记,如果那一趟排序没有交换元素,说明这组数据已经有序,不用再继续下去。最坏时间复杂度(逆序情况):o(n2)时间复杂度(有序情况):o(n)时间复杂度:o(n2)空间复杂度:o(1)

2202_75941514的博客 217

混合精度训练与推理:平衡性能与效率

在深度学习领域,模型的训练和推理通常需要大量的计算资源和时间。随着模型规模的不断增大,如大型语言模型、复杂的视觉模型等,对计算资源的需求也呈指数级增长。混合精度训练与推理技术应运而生,它通过在训练和推理过程中同时使用不同精度的数据类型,在保证模型性能的前提下,显著提高计算效率,减少内存占用。本文的目的是全面介绍混合精度训练与推理技术,包括其原理、实现方法、应用场景以及相关工具和资源,帮助读者深入理解并掌握该技术,从而在实际项目中更好地平衡性能与效率。

操作系统内核探秘的博客 1068

冒泡排序:时间复杂度与空间复杂度

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。 算法分析 冒泡排序算法是所有排序算法中最简单的(前面也提到过),在生活中应...

丨晋丨 5万+

机器人中的数值优化(十四)——罚函数法(Penalty Method)、障碍函数法(Barrier Method)、拉格朗日松弛法(Lagrangian Relaxation)

本系列文章主要是我在学习《数值优化》过程中的一些笔记和相关思考,主要的学习资料是深蓝学院的课程《机器人中的数值优化》和高立编著的《数值最优化方法》等,本系列文章篇数较多,不定期更新,上半部分介绍无约束优化,下半部分介绍带约束的优化,中间会穿插一些路径规划方面的应用实例

慕羽★的博客 5222

Neo4j LLM知识图谱构建器使用教程

是一个开源应用程序,旨在将非结构化数据(如PDF、文档、文本、YouTube视频、网页等)转换为存储在Neo4j中的知识图谱。该项目利用大型语言模型(如OpenAI、Gemini等)从文本中提取节点、关系及其属性,并通过Langchain框架创建结构化的知识图谱。

u013250861的博客 541

排序算法之 冒泡排序 及其时间复杂度和空间复杂度

冒泡排序(Bubble Sort),是一种计算机科学领域的较简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越大的元素会经由交换慢慢“浮”到数列的顶端,故名。 算法分析 冒泡排序算法是所有排序算法中最简单的(前面也提到过),在生活中应该也会看到气泡从水...

weixin_43419883的博客 4万+

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

冒泡排序的特点及代码分析

1、空间复杂度低,时间复杂度高2、升序排序中每一轮比较会把最大的数下沉到最低,所以相互比较的次数每一轮会比前一轮少一次。3、是一种稳定的排序算法

SUYDFBGUSDYFBLS的博客 2075

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

选择排序,插入,快排,冒泡排序的时间空间复杂度详解

时间复杂度 在算法的分析中,语句的执行次数T(n)是一个关于n(问题规模)的一个函数。分析n的变化引起T(n)的改变,进而得到T(n)的数量级,也就是时间频率。如果存在某一个辅助函数f(n),当n趋于无穷大时,T(n)/f(n)的值为一个不为0的常数,有T(n)=O(f(n)),这就是算法的渐进时间复杂度,也就是我们常说的时间复杂度。 大O表示法:用O(f(n))来体现时间复杂度的方法被称作大O表示法; 大O推导法: O(1)叫做常数阶;O(n)叫做线性阶;O(n^2)叫做平方阶。 用常数1取代运行时间中

SamGeren的博客 2万+

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

冒泡排序的时间复杂度和空间复杂度

冒泡排序的时间复杂度和空间复杂度 基本步骤 1.外循环是遍历每个元素,每次都放置好一个元素; 2.内循环是比较相邻的两个元素,把大的元素交换到后面; 3.等到第一步中循环好了以后也就说明全部元素排序好了; 代码实现 void bubbleSort(int array[], int length) { int i, j, tmp; if (1 >= length) return;// 判断参数条件 for (i = length-1; i >

weixin_46323613的博客 1245

冒泡排序-C语言版(带图详细)

前言 相信大家在学习数据结构算法的时候经常会遇到的问题就是,老师讲解完这个算法思想,自己也听懂了,但一到自己写代码就写不出来,或者是即便自己模模糊糊的照着网上的代码自己写出来了,但是过几天就又忘了,其实这就是我们没有深刻的理解的这个算法的思想。 接下来,我就结合图例给大家详细的讲解一下。 <hr style=" border:solid; width:100px; height:1px;" color=#000000 size=1"> 一、什么是冒泡排序? 冒泡排序的名字是因为元...

小陈没烦恼 5万+

交换排序算法之冒泡排序-C语言版(带图详细)

相信大家在学习数据结构算法的时候经常会遇到的问题就是,老师讲解完这个算法思想,自己也听懂了,但一到自己写代码就写不出来,或者是即便自己模模糊糊的照着网上的代码自己写出来了,但是过几天就又忘了,其实这就是我们没有深刻的理解的这个算法的思想。 接下来,我就结合图例给大家详细的讲解一下。

小陈没烦恼 6409

冒泡排序中时间与空间的复杂度

关注+星标公众号,不错过精彩内容来源 | 优快云编排| strongerHuang软件排序算法中,冒泡排序是最经典的一个,很多大学教程也都是用它作为案例。你知道冒泡排序的时间与空间复杂...

strongerHuang 1903

数据结构之冒泡排序算法(图解+分析+代码调优)

1、冒泡排序的介绍 冒泡排序是一种比较简单的排序算法,其基本思想是:通过对待排序序列从前向后(从下标较小的元素开始),依次比较相邻元素的值,若发现逆序则交换,使值较大的元素逐渐从前移向后部,可以形象的理解为像水底下的气泡一样逐渐向上冒。 2、图示冒泡排序 ...

IronmanJay 7058

python 冒泡排序

冒泡排序(Bubble Sort)是一种简单的排序算法,它重复地遍历要排序的数列,一次比较两个元素,如果它们的顺序错误就把它们交换过来。遍历数列的工作是重复进行的,直到没有再需要交换的元素,这意味着数列已经排序完成。这个过程就像水底的气泡一样逐渐上升到水面。1)随机生成范围在0到10的20个小数(包含0和10,保留小数点后两位),并且输出到控制台上。算法,使得随机生成的数按照从大到小的顺序排序,并且输出到控制台。

butterfly_onfly的专栏 1692

C++实现冒泡排序

#include using namespace std; #define SIZE_A 8 int main(){ void myshow(int* p,int length);//函数提前声明 int list[SIZE_A]={49,38,65,97,76,13,27,49}; cout<<"排序前:"<<endl; myshow(list,SIZE_A); //冒泡排序-

cxcbupt 1707

java冒泡排序经典代码_Java 排序算法

我想对于它每个学过C语言的都会了解,这可能是很多人接触的第一个排序算法。1、基本思想冒泡排序(Bubble Sort)是一种简单的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。2、算法描述冒泡排序算法的运作如下:...

weixin_36003504的博客 600

冒泡排序

冒泡排序 算法思想 冒泡排序是最简单的排序算法之一,在给定的序列中,依次的比较两个数字,如果顺序错误就交换两个数字的位置。然后重复步骤,直到整个给定的序列符合要求位置。 算法步骤: 比较相邻的两个数字,如果第一个比第二个数字大,那么交换两个数字的位置;否则,继续下一个位置的比较 对每一对相邻的元素做同样的工作,遍历完整个序列以后,最后的数字一定是最大的数字 针对所有的数字,重复以上步骤,除了最后...

EngineerHe的博客 1856

【八大经典排序算法】冒泡排序

冒泡排序由于其简单和易于理解,使其成为初学者学习排序算法的首选,也是初学者接触到的第一个排序算法。其原理是通过重复交换相邻的元素来将最大的元素逐步“冒泡”到最后。冒泡排序由美国计算机科学家冯·诺伊曼(John von Neumann)于1945年提出。冯·诺伊曼是计算机科学和现代计算机体系结构的奠基人之一,他在设计计算机算法时,意识到排序是计算机科学中的一个基本问题。于是,他提出了冒泡排序算法。冒泡排序的思想是基于比较相邻元素的大小,如果顺序不正确,则交换它们的位置。

Zhenyu_Coder的博客 2059
上一篇: 常见的排序算法及时间空间复杂度
下一篇: 选择排序代码及时间空间复杂度
defdsdddev
博客等级 码龄4年 439粉丝 314原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值