冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析

简介: 冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析

冒泡排序(Bubble Sort)

冒泡排序(Bubble Sort)是一种简单的排序算法,它通过比较相邻的元素并交换它们的位置来达到排序的目的。具体来说,冒泡排序的基本思想是从左到右依次比较相邻的两个元素,如果前一个元素大于后一个元素,则交换它们的位置。这样一轮比较下来,最大的元素就会被交换到数组的末尾。然后再从左到右进行下一轮比较,直到整个数组都有序为止。

冒泡排序的时间复杂度为 O(n^2),其中 n 是待排序数组的长度。虽然冒泡排序的时间复杂度较高,但它的实现简单,易于理解,适用于一些小型数据集的排序

下面给大家展示代码:

体思路:从左往右不断比较相邻的两个数,将大的数不断往右移,经过数趟从左往右比较数组的排序便可成为升序的形式,注意在比较时已经排序过到右边的数就不需要再进行比较了,所以上面第二个for循环条件为  j<9-i ,相对其他两种排序冒泡排序相对简单,下面我们讲第二个排序!


选择排序(Selection Sort)

选择排序(Selection Sort)是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。
选择排序的
时间复杂度为 O(n^2)空间复杂度为 O(1)。虽然选择排序的时间复杂度较高,但它的实现简单,适用于一些小型数据集的排序。

                                                           下面展示代码:

代码实现思路:我们从arr[0] 开始到arr[9] 都对其前面的数进行比较,将最小的值放在arr[i]处,上面图片中注那里我解释一下,这里举个列子我们用arr[0]比较后9位得出最小值放在arr[0]这里,此时这个数就是第1小也就是i+1小,因为此时i为0。依次往后比较我们也就能够得到一个升序的排序!下面讲最后一个排序也是三个之中最难的排序!!!


快速排序(Quick Sort)

快速排序(Quick Sort)是一种分治的排序算法。快速排序算法会选择数组中的一个元素作为枢轴(pivot),然后将数组中所有其他元素与该枢轴元素进行比较,根据比较结果将其放在枢轴的左边或右边,最终将数组分为两个子数组。然后对这两个子数组递归地应用快速排序算法,直到每个子数组只包含一个元素为止。


快速排序的平均时间复杂度为O(nlogn),空间复杂度为O(logn)。然而,在最坏情况下,快速排序的时间复杂度为O(n^2)。快速排序的性能取决于枢轴元素的选择,选择一个好的枢轴元素可以提高快速排序的效率。


快速排序是一种高效的排序算法,适用于大规模数据的排序。它的实现比较复杂,但在许多情况下是首选的排序算法。

                                                                 下面展示代码:

只看代码可能难以理解,下面看一下简图和具体思路:

首先我们在开头定义了一个转换函数Swap()函数供后面使用,然后数组从左边找比key大的值,从右边找比key小的值,然后进行互换,然后左右两边继续找对应其条件的值(即红字体),直到right与left相等(记住代码是一定要right先往左移的不然就出现错误了),然后arr[left]与arr[key]交换后从right(写left也行,因为此时right==left)的左右分开,就是上面代码的right-1和right+1,分开过后再对分开的两部分在进行快速排序,即运用递归再次调用函数,直至结束!!


至此本文结束,感谢各位的耐心观看,如果可以,一键三连哦!如有错误可以指出,本人接受建议,并由衷感谢您!!!

目录
相关文章
|
25天前
|
弹性计算 人工智能 架构师
阿里云携手Altair共拓云上工业仿真新机遇
2024年9月12日,「2024 Altair 技术大会杭州站」成功召开,阿里云弹性计算产品运营与生态负责人何川,与Altair中国技术总监赵阳在会上联合发布了最新的“云上CAE一体机”。
阿里云携手Altair共拓云上工业仿真新机遇
|
17天前
|
存储 关系型数据库 分布式数据库
GraphRAG:基于PolarDB+通义千问+LangChain的知识图谱+大模型最佳实践
本文介绍了如何使用PolarDB、通义千问和LangChain搭建GraphRAG系统,结合知识图谱和向量检索提升问答质量。通过实例展示了单独使用向量检索和图检索的局限性,并通过图+向量联合搜索增强了问答准确性。PolarDB支持AGE图引擎和pgvector插件,实现图数据和向量数据的统一存储与检索,提升了RAG系统的性能和效果。
|
4天前
|
JSON 自然语言处理 数据管理
阿里云百炼产品月刊【2024年9月】
阿里云百炼产品月刊【2024年9月】,涵盖本月产品和功能发布、活动,应用实践等内容,帮助您快速了解阿里云百炼产品的最新动态。
阿里云百炼产品月刊【2024年9月】
|
1天前
|
人工智能 Rust Java
10月更文挑战赛火热启动,坚持热爱坚持创作!
开发者社区10月更文挑战,寻找热爱技术内容创作的你,欢迎来创作!
263 12
|
19天前
|
人工智能 IDE 程序员
期盼已久!通义灵码 AI 程序员开启邀测,全流程开发仅用几分钟
在云栖大会上,阿里云云原生应用平台负责人丁宇宣布,「通义灵码」完成全面升级,并正式发布 AI 程序员。
|
21天前
|
机器学习/深度学习 算法 大数据
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
2024“华为杯”数学建模竞赛,对ABCDEF每个题进行详细的分析,涵盖风电场功率优化、WLAN网络吞吐量、磁性元件损耗建模、地理环境问题、高速公路应急车道启用和X射线脉冲星建模等多领域问题,解析了问题类型、专业和技能的需要。
2582 22
【BetterBench博士】2024 “华为杯”第二十一届中国研究生数学建模竞赛 选题分析
|
3天前
|
存储 人工智能 搜索推荐
数据治理,是时候打破刻板印象了
瓴羊智能数据建设与治理产品Datapin全面升级,可演进扩展的数据架构体系为企业数据治理预留发展空间,推出敏捷版用以解决企业数据量不大但需构建数据的场景问题,基于大模型打造的DataAgent更是为企业用好数据资产提供了便利。
171 2
|
1天前
|
编译器 C#
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
C#多态概述:通过继承实现的不同对象调用相同的方法,表现出不同的行为
101 65
|
21天前
|
机器学习/深度学习 算法 数据可视化
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
2024年中国研究生数学建模竞赛C题聚焦磁性元件磁芯损耗建模。题目背景介绍了电能变换技术的发展与应用,强调磁性元件在功率变换器中的重要性。磁芯损耗受多种因素影响,现有模型难以精确预测。题目要求通过数据分析建立高精度磁芯损耗模型。具体任务包括励磁波形分类、修正斯坦麦茨方程、分析影响因素、构建预测模型及优化设计条件。涉及数据预处理、特征提取、机器学习及优化算法等技术。适合电气、材料、计算机等多个专业学生参与。
1578 16
【BetterBench博士】2024年中国研究生数学建模竞赛 C题:数据驱动下磁性元件的磁芯损耗建模 问题分析、数学模型、python 代码
|
5天前
|
Linux 虚拟化 开发者
一键将CentOs的yum源更换为国内阿里yum源
一键将CentOs的yum源更换为国内阿里yum源
263 2