#include<iostream>usingnamespacestd;#include<assert.h>constintN=10000;constintK=100;voidAdjustDown(inttopK[],intsize,size_tparent){ assert(topK); intchild=parent*2+1; while(child<size) { if(child+1<size &&topK[child+1]<topK[c..
分类:
编程语言 时间:
2016-06-02 11:41:58
阅读次数:
365
#include<iostream>usingnamespacestd;#include<vector>#include<assert.h>//仿函数template<classT>structLess{ booloperator()(constT&left,constT&right) { returnleft<right; }};template<classT>structGreater{ booloperator()..
分类:
编程语言 时间:
2016-06-02 00:59:48
阅读次数:
230
堆是什么?是一种特殊的完全二叉树,就像下面这棵树一样。
有没有发现这棵二叉树有一个特点,就是所有父结点都比子结点要小(注意:圆圈里面的数是值,圆圈上面的数是这个结点的编号,此规定仅适用于本节)。符合这样特点的完全二叉树我们称为最小堆。反之,如果所有父结点都比子结点要大,这样的完全二叉树称为最大堆。那这一特性究竟有什么用呢?
假如有14个数分别是99、5、36、7、22、17、4...
分类:
其他好文 时间:
2016-06-01 16:54:52
阅读次数:
315
堆 (数据结构)[工程下载>>>] 堆(英语:Heap)是计算机科学中一类特殊的数据结构的统称。堆通常是一个可以被看做一棵树的数组对象。在队列中,调度程序反复提取队列中第一个作业并运行,因为实际情况中某些时间较短的任务将等待很长时间才能结束,或者某些不短小,但具有重要性的作业,同样应当具有优先权。堆即为解决此类问题设计的一种数据结构。1.1 逻辑定义 n个元素序列{k1,k2…ki…kn},当且...
分类:
其他好文 时间:
2016-05-26 08:49:19
阅读次数:
241
一,堆排序介绍 堆是一个优先级队列,对于大顶堆而言,堆顶元素的权值最大。将 待排序的数组 建堆,然后不断地删除堆顶元素,就实现了排序。关于堆,参考:数据结构--堆的实现之深入分析 下面的堆排序算法将数组中的元素从小到大排序,用大顶堆来实现。 二,堆排序算法分析 现给定了一维数组,需要将数组中的元素使 ...
分类:
编程语言 时间:
2016-05-24 10:28:01
阅读次数:
239
堆排序(Heapsort)是指利用堆这种数据结构所设计的一种排序算法,它是选择排序的一种。可以利用数组的特点快速定位指定索引的元素。堆分为大根堆和小根堆,是完全二叉树。大根堆的要求是每个节点的值都不大于其父节点的值。...
分类:
编程语言 时间:
2016-05-23 19:15:07
阅读次数:
225
插入排序:
算法简介:接插入排序(InsertionSort)的基本思想是:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。时间复杂度为O(n^2)。最稳定的排序算法但是效率很低
代码实现:
voidInsertSort(int*arr,intn)
{
..
分类:
编程语言 时间:
2016-05-18 22:14:03
阅读次数:
200
(一)用仿函数实现大堆小堆堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operat..
分类:
其他好文 时间:
2016-05-13 05:19:40
阅读次数:
179
1.1
基本数据结构
1.
数组
2.
链表,双向链表
3.
队列,单调队列,双端队列
4.
栈,单调栈
1.2
中级数据结构
1.
堆
2.
并查集与带权并查集
3. hash
表
自然溢出
双hash
1.3
高级数据结构
1.
树状数组
2.
线段树,线段树合并
3.
平衡树
Treap
随...
分类:
编程语言 时间:
2016-05-12 19:18:55
阅读次数:
371
介绍 什么是二项队列,为什么会用到二项队列? 与二叉堆一样,二项队列也是优先级队列的一种实现方式。在 数据结构--堆的实现之深入分析 的末尾 ,简单地比较了一下二叉堆与二项队列。 对于二项队列而言,它可以弥补二叉堆的不足:merge操作的时间复杂度为O(N)。二项队列的merge操作的最坏时间复
bbs.chinaacc.com/forum-2-26/topic-5721391.html
bb...
分类:
其他好文 时间:
2016-05-09 07:06:31
阅读次数:
242