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

本文涉及的产品
全局流量管理 GTM,标准版 1个月
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
云解析 DNS,旗舰版 1个月
简介: 冒泡排序(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,分开过后再对分开的两部分在进行快速排序,即运用递归再次调用函数,直至结束!!


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

目录
相关文章
|
12月前
|
搜索推荐 JavaScript 算法
详细解析冒泡排序,JS如何基本实现的。
详细解析冒泡排序,JS如何基本实现的。
|
6天前
|
搜索推荐 算法 数据可视化
深入解析冒泡排序算法
深入解析冒泡排序算法
14 4
|
3天前
|
存储 搜索推荐 算法
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
【排序算法(二)】——冒泡排序、快速排序和归并排序—>深层解析
|
3天前
|
搜索推荐 算法
【排序算法(一)】——插入排序,选择排序 —> 深层解析
【排序算法(一)】——插入排序,选择排序 —> 深层解析
|
4月前
|
搜索推荐 算法 大数据
​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
​【数据结构与算法】冒泡排序:简单易懂的排序算法解析
|
5月前
|
Python
Python中sort和sorted函数用法解析
Python中sort和sorted函数用法解析
52 0
|
存储 算法 测试技术
深入解析 qsort 函数(下),用冒泡排序模拟实现 qsort 函数
深入解析 qsort 函数(下),用冒泡排序模拟实现 qsort 函数
37 0
|
人工智能 算法 搜索推荐
快速排序,分治法实际应用(含码源与解析)
快速排序,分治法实际应用(含码源与解析)
|
编解码 算法 网络协议
【算法基础】快速排序解析
快速排序是一种分治排序方法,通过多次比较和交换来实现排序,其基本操作是将无序表不断拆分和交换,直到拆分到最小时,整个表就成为了一个有序表,从而得到一个新的、记录数量增1的有序表。
116 0
【算法基础】快速排序解析

推荐镜像

更多