![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
排序算法
文章平均质量分 83
Disappear_XueChao
这个作者很懒,什么都没留下…
展开
-
冒泡排序(BubbleSort)思想与实现
冒泡排序也属于简单的排序方法,时间复杂度为:O(n^2)。(1) 冒泡排序的思想冒泡排序的思想就是:该排序算法意在从后往前像气泡一样,以此冒出数组中值小的元素。以升序为例,假设数组的长度为size。从数组的最后一个元素(即第size-1个元素)开始,从后往前两两进行比较,即最开始比较第size-1个元素和第size-2个元素的值的大小,若发现前者比后者小,则进行交换,否则不交换,之后不原创 2017-08-28 20:02:40 · 1423 阅读 · 0 评论 -
梳排序(CombSort)思想与实现
梳排序也属于简单的排序算法,也是一种不稳定的排序方法。在讲述梳排序的思想之前,先介绍一下与该排序有关的一个关键常量:递减率;该常量为固定值:1.3。关于怎样得到该常量的,是由于原作者Wlodzimierz Dobosiewicz以随机数做实验得到的,对于此大可不必纠结,直接用就行。(1) 梳排序的思想梳排序的思想就是:最开始的时候先定义一个步长,该步长为数组的长度除以1.3(注意:直接原创 2017-09-04 22:02:47 · 1690 阅读 · 0 评论 -
快速排序(QuickSort)思想与实现
快速排序属于高级排序方法,值得注意的是:C语言的标准库stdlib.h里面就有该算法函数qsort(),读者可以直接调用该函数来实现排序,关于该函数的使用,这里不做详细描述,本文重在讲述快速排序的思想与实现。(1)快速排序的思想快速排序的思想就是:在一个数组中选取一个参考元素(参考元素的选取任意,一般选取第0个元素),以排升序为例,要使得该参考元素处于左边元素全小于它,右边元素全大于它的位置,这样算是把参考元素排好了;然后将参考元素的左边所有元素当作一个子数组,它的右边所有元素也当作一个子数组,接下来对原创 2017-09-05 10:24:23 · 534 阅读 · 0 评论 -
希尔排序(ShellSort)思想与实现
希尔排序属于高级的排序方法,接下来阐述一下该排序算法的思想。(1) 希尔排序的思想希尔排序的思想就是:定义一个呈递减变化的步长gap,假设数组长度为size,最开始定义的步长为gap=size/2,并从第0个元素开始,将数组中间隔为gap的元素构成子数组,共构成gap个子数组,之后对每个子数组进行排序(排序方法任意),此时第一步就算完成了;然后定义第二步的步长为gap=gap/2,并做与第原创 2017-09-05 17:40:04 · 550 阅读 · 0 评论 -
归并排序(MergeSort)思想与实现
归并排序属于高级的排序方法,在介绍归并排序的思想之前,先讲述一种采用比较方式的排序方法。假设有两个已经排好序的数组arr1[ ],arr2[ ],且均是升序或者降序,那么可以进行以下操作:以升序为例,先创建一个尺寸大小为arr1[ ]与arr2[ ]尺寸之和的数组temp[ ],然后同时从两数组的第0个元素开始遍历,若arr1[i] < arr2[j],则可以把arr1[i]放入temp[k]中后,执行i++,k++,继续往后比较;若arr1[i] > arr2[j],则可以把arr2[j]放入temp[k原创 2017-09-09 11:00:45 · 1158 阅读 · 0 评论 -
桶排序(BucketSort)思想与实现
桶排序属于简单而且易于理解的排序算法,接下来介绍一下该算法的思想。(1) 桶排序的思想 桶排序的思想就是:首先遍历一遍数组,找出数组中值最大的元素,假设最大的元素为Max;然后定义Max+1个“桶”,可以用“队列”或“栈”来定义;之后再遍历一遍数组,将元素值为i的元素放在第i个桶中;最后从第0个桶开始遍历,将桶中的元素以此放入原有数组中,直到遍历到第Max个桶为止。 由此可见,桶排原创 2017-09-11 09:00:20 · 1495 阅读 · 1 评论 -
基数排序(RadixSort)思想与实现
基数排序属于高级的排序方法,该排序算法是在“桶排序”的基础上所进行的改进,读者若是想了解“桶排序”思想,可以点击这里。接下来介绍一下基数排序的思想。(1) 基数排序的思想 基数排序的思想就是:首先定义10个“桶”,下标为0~9,且只能用“队列”来定义,这里后面会有解释;然后遍历数组,按照元素的“个位”数值,依次放入对应下标的桶中,放完所有元素后,从第0个桶开始遍历,以此取出桶中元素按顺序原创 2017-09-11 09:38:13 · 1032 阅读 · 0 评论 -
选择排序(SelectSort)思想与实现
选择排序属于相对来说比较简单的排序方法,时间复杂度为:O(n^2)。(1) 选择排序的思想选择排序的思想就是:选择排序的本意在于每次选择出最小或者最大的元素,将其放在数组的前面,从而使得数组呈现升序或者降序。以排升序为例,从数组的第0个元素开始,我们的目的是要将数组中最小的元素放在第0个元素的位置,在此前提下进行接下来的操作。开始我们认为第0个元素是数组中最小的元素,然后第1个元素开始往后原创 2017-08-28 10:19:05 · 1415 阅读 · 0 评论 -
插入排序(InsertSort)思想与实现
在介绍插入排序的思想之前,说一下插入排序的一个重要的优点:插入排序只有需要排序时才会排序。该算法的时间复杂度为O(n^2),接下来我们来了解一下该排序的思想。(1) 插入排序的思想插入排序的思想就是:从数组的下标为0的元素出发,每次向后取一个元素,将该元素插入到前面已排好的子数组中,以排升序为例,将所要插入的元素插在左边小于该元素和右边大于该元素之间的位置,进而形成新的子数组,直到所有元素原创 2017-08-28 00:14:02 · 860 阅读 · 0 评论