上篇文章用的是quicksort方法排序,但是如果用快速排序法对重复率很高的slice排序的时候,时间复杂度会激增,速度相当慢
所以尝试了一下堆排序,实验结果,感觉挺好的.下面是代码,大家可以参考一下,这个是建立的大顶堆.
二叉树的特性:
最后一个非叶子节点 : root = length/2(当length为奇数的时候root向下取整) 在GO语言中的索引位置:root - 1,
...
分类:
编程语言 时间:
2015-06-26 11:10:42
阅读次数:
174
数据结构-堆 堆(英语:Heap),是一种拥有像树那样的特殊数据结构,或者理解为具有优先级的树。它的特点是父节点的值大于(或小于)两个子节点的值(分别称为大顶堆和小顶堆)。它常用于管理算法执行过程中的信息...
分类:
其他好文 时间:
2015-06-24 07:06:32
阅读次数:
132
堆排序属于选择排序,单列出来是因为比较重要和比较困难。。
先说一下,筛选过程是将一段序列通过元素交换使得该段序列的元素构成一个大顶堆。然后,堆的初始化过程,就是从最后一个非叶子结点开始筛选直到根结点,这样多次筛选之后就是一个大顶堆了。 初始化之后,那么根结点的元素一定是最大的元素,然后跟最后一个位置的元素交换。然后,再重建大顶堆(范围逐渐缩小,有序的元素不再参与),交换,直到只有堆顶元素无序。这...
分类:
编程语言 时间:
2015-06-23 21:45:55
阅读次数:
139
一、什么是堆
堆是具有如下性质的完全二叉树。每个节点大于或者等于其左右孩子结点的值,称为大顶堆。
或者每个结点的值都小于或者等于左右孩子结点的值,称为小顶堆。
二、如果通过堆排序
由堆的定义可以知道,在堆中,顶点最大(或者最小)。我们就可以把堆顶拿出来,再把剩下的再次组成堆。然后再拿出堆顶。
这样就实现排序啦。
还需要解决两个问题:
(1)如何把一凌乱的数据组成堆
(2)把...
分类:
编程语言 时间:
2015-06-23 12:02:28
阅读次数:
155
http://www.cnblogs.com/mengdd/archive/2012/11/30/2796845.htmlHeap Sort//堆筛选函数//已知H[start~end]中除了start之外均满足堆的定义//本函数进行调整,使H[start~end]成为一个大顶堆typedef in...
分类:
编程语言 时间:
2015-06-02 13:03:56
阅读次数:
128
堆排序 堆排序是利用堆的性质进行的一种选择排序。以下先讨论一下堆。1.堆堆实际上是一棵全然二叉树,其不论什么一非叶节点满足性质: Key[i]=Key[2i+1]&&key>=key[2i+2] 即不论什么一非叶节点的keyword不大于或者不小于其左右孩子节点的keyword。 堆分为大顶堆和小顶...
分类:
编程语言 时间:
2015-05-07 10:25:21
阅读次数:
153
1.概述: 堆的概念:堆是一种完全二叉树,其高度为log(n),可以用一维数组来实现。堆中存储的数据是局部有序的。可分为两种堆:最大顶堆和最小顶堆。 最大顶堆:任意一个结点的值都大于等于其任意一个子结点的值。 最小顶堆:任意一个结点的值都小于等于其任意一个子结点的值。可以发现,堆的罗辑结构是树...
分类:
其他好文 时间:
2015-04-09 16:51:25
阅读次数:
145
STL中,sort的默认排序为less,也就是说从小到大排序;priority_queue默认是less,也就说大顶堆;map默认是less,也就说用迭代器迭代的时候默认是小的排在前面;set默认是less,也就是说用迭代器迭代的时候是从小到大排序的。1、sort#include #include ...
分类:
其他好文 时间:
2015-04-09 13:42:32
阅读次数:
163
堆排序的思想 利用大顶堆(小顶堆)堆顶记录的是最大关键字(最小关键字)这一特性,使得每次从无序中选择最大记录(最小记录)变得简单。 其基本思想为(大顶堆): 1)将初始待排序关键字序列(R1,R2....Rn)构建成大顶堆,此堆为初始的无序区; 2)将堆顶元素R[1]与最后一个元素R[n]交换,此时...
分类:
编程语言 时间:
2015-03-31 23:52:59
阅读次数:
245
堆是具有下列性质的完全二叉树:每个结点的值都大于等于其走有孩子节点的值,称为大顶堆;或者每个结点的值都小于等于其走有孩子节点的值,称为小顶堆。
再看堆排序。堆排序就是利用堆(假设是大顶堆)进行排序的方法。它的基本思路是将待排序的序列造成大顶堆。此时,整个序列的最大值就是堆顶的根节点。将他移走(其实就是将其与堆数组的末尾元素交换,此时末尾就是最大值),然后将剩余的n-1序列重新构造成一个堆,这样就...
分类:
编程语言 时间:
2015-03-31 09:14:54
阅读次数:
223