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

冒泡排序(Bubble Sort)

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

冒泡排序的时间复杂度为 O(n^2),其中 n 是待排序数组的长度。虽然冒泡排序的时间复杂度较高,但它的实现简单,易于理解,适用于一些小型数据集的排序
下面给大家展示代码:冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第1张图片

冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第2张图片

冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第3张图片

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


选择排序(Selection Sort)

选择排序(Selection Sort)是一种简单直观的排序算法。它首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。以此类推,直到所有元素均排序完毕。

选择排序的
时间复杂度为 O(n^2)空间复杂度为 O(1)。虽然选择排序的时间复杂度较高,但它的实现简单,适用于一些小型数据集的排序。
                                                            下面展示代码:

冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第4张图片冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第5张图片

代码实现思路:我们从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)。快速排序的性能取决于枢轴元素的选择,选择一个好的枢轴元素可以提高快速排序的效率。

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

冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第6张图片冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第7张图片冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第8张图片冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第9张图片

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

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

冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第10张图片


至此本文结束,感谢各位的耐心观看,如果可以,一键三连哦!如有错误可以指出,本人接受建议,并由衷感谢您!!!冒泡排序(Bubble Sort)以及选择排序(Selection Sort)和快速排序(Quick Sort)详细解析_第11张图片

你可能感兴趣的:(算法,排序算法,数据结构,c#,c语言)