
C/C++排序算法
CaptainXue
这里全是干货!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
堆排序——一学就会
堆排序是利用堆这种数据结构而设计的一种排序算法。既然是利用堆进行排序,我们首先了解什么是堆?什么是完全二叉树?(1)完全二叉树是指一种树型结构,每一个结点的子节点数不超过2个。图1、2/3均为完全二叉树,图4不是完全二叉树:(2)堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;每个结点的值都小于或等于其左右孩子结点的值,称为小顶堆。如下图:怎么...原创 2019-05-19 19:28:35 · 1940 阅读 · 1 评论 -
希尔排序(ShellSort)——加强版的插入排序
希尔(Shell)排序又称为缩小增量排序,它是插入排序算法的一种加强版。它与插入排序的不同之处在于:它会优先和距离较远的元素进行比较。希尔排序的基本思想:(1)选择一个希尔增量序列t1,t2,…,tk,(递减序列,tk=1)(2)按增量序列个数k,对序列进行k 趟排序,每趟排序,根据对应的增量ti,将待排序列分割成若干子序列,分别对各子序列进行插入排序。当且仅当增量为1 时,整个序列合成...原创 2019-05-15 13:46:59 · 539 阅读 · 1 评论 -
快速排序(Quick Sort)—挖坑填数法
前面的博文讲了冒泡排序、选择排序、插入排序,今天我们谈谈快速排序!快速排序的基本思想是:1.先从序列中取出一个数作为基准数。2.分区过程,将比这个数大的数全放到它的右边,小于或等于它的数全放到它的左边。(分区的方式多样,但一定要保证基准数左边的数比它大(小),右边的数比它小(大))3.再对左右区间重复第一步、第二步,直到各区间只有一个数。快速排序的关键点(一定要理解):1、 如何确定基...原创 2019-05-14 21:06:56 · 4000 阅读 · 1 评论 -
插入排序法(详细介绍)
前面我的博文中详细介绍了冒泡排序法、选择排序法,今天我们继续学习另一种排序方法—插入排序,分为前插排序和后插排序。插入排序的基本思想是:将数组的第一个数认为是有序数组,从后往前(从前往后)扫描该有序数组,把数组中其余n-1个数,根据数值的大小,插入到有序数组中,直至数组中的所有数有序排列为止。这样的话,n个元素需要进行n-1趟排序!!!举个例子:4个数字4,6,7,5进行从大到小的排序。前插排...原创 2019-05-13 21:26:22 · 104436 阅读 · 11 评论 -
选择排序法——超详细的总结
之前在我的博文中详细介绍了冒泡排序,它的基本思想是:每次比较相邻两个数的大小,只要逆序(和题意要求的顺序相反),就交换两个数;这样交换的次数繁多!而选择排序法就避免了这个问题。选择排序的基本思想:找到当前数字序列中最大(最小)的数,记录其所在位置,将其和最前面(最后面)的数进行交换,使最小(最大)的元素上浮(下沉)到本次排序的最前面(最后面),从而完成一趟(pass)排序。下一趟排序时,已经有...原创 2019-05-13 18:08:13 · 20577 阅读 · 2 评论 -
超详细的冒泡排序法:(一学必会)
最近很多刚入门的道友在询问数据排序的问题,在这里,我也详细给大家写一写,非常适合初学者,希望能对你有所帮助。常用的数据排序的方法有:冒泡排序法、插入排序法、选择排序法、快速排序法、归并排序、堆排序、希尔排序等!由于篇幅过长,因此,分开讲解!1. 冒泡排序(Bubble Sort)冒泡法排序的基本思想:从前向后(或从后向前)依次比较相邻两个元素的大小,如果逆序(与题意要求的顺序相反)就进行交...原创 2019-05-13 16:45:44 · 5296 阅读 · 6 评论 -
最简单的排序法——sort( )函数
sort( )函数是库函数提供的排序函数,必须包括头文件#include。书写形式为:sort(数组起始位置,数组结束位置,cmp),其中第三个参数cmp表示排序方式的函数,默认表示升序方式,可省略。(1)升序排序例如:数组a[5]={4,3,2,1,7}进行升序排列写法一:sort(a,a+5) //数组的下标从0开始,数组名代表数组的首地址。5代表数组的长度当然,如果人为地把数组的...原创 2019-05-15 17:46:07 · 5305 阅读 · 0 评论