一、堆先说说堆概念:如果有一个关键码的集合K={k0,k1,k2,…,kn-1},把它的所有元素按完全二叉树的顺序存储方式存储在一个一维数组中,并满足:Ki<=K2i+1且Ki<=K2i+2(Ki>=K2i+1且Ki>=K2i+2)i=0,1,2…,则称为小堆(或大堆)。小堆(大堆)中:任一结点的关键码均小于(大于)等于它的左右孩子的关键码,位于堆顶结点的关键码最小(最大)
分类:
其他好文 时间:
2018-02-26 11:43:25
阅读次数:
136
选择排序学过的有三种:简单选择排序、树形选择排序、堆排序 今天先来简单的了解一下堆排序: 完全二叉树,即从头到尾,从左到右依次排序,符合大堆(小堆)都行,即ki>=k2i && ki >= k2i+1 由于此处使用的是数组,则最长为array.length-1,并且 ki>=k2i+1 && ki ...
分类:
编程语言 时间:
2016-09-06 15:30:58
阅读次数:
202
#pragmaonce
#include<vector>
#include<assert.h>
//
//小堆==大堆
//仿函数
//
template<classT>
structGreater
{
booloperator()(constT&l,constT&r)
{
returnl>r;
}
};
template<classT>
structLess
{
booloperator()(constT&..
分类:
其他好文 时间:
2016-08-26 23:09:02
阅读次数:
201
查找数据10000个数中找出最大的前100个数创建一个100个数的小堆,最上面的数是这100个数中最小的;然后依次遍历(从101到10000),如果比它大,替换它。代码实现如下:https://github.com/HandsomeBoby/Heap/blob/master/GetTopK.h堆排序使用大堆进行数组的排序代码实现如下:h..
分类:
其他好文 时间:
2016-05-24 22:53:25
阅读次数:
181
(一)用仿函数实现大堆小堆堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operat..
分类:
其他好文 时间:
2016-05-13 05:19:40
阅读次数:
179
堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。堆结构的二叉树存储是:代码实现如下:#pragmaonce
#include<iostream>
#include<vector>
#include<assert.h>
usin..
分类:
其他好文 时间:
2016-05-13 04:45:55
阅读次数:
169
一、堆的概念堆数据结构是一种数组对象,它可以被视为一棵完全二叉树结构。堆结构的二叉树存储是:最大堆:每个父节点的都大于孩子节点。最小堆:每个父节点的都小于孩子节点。堆栈中的物体具有一个特性:最后一个放入堆栈中的物体总是被最先拿出来,这个特性通常称为后进先出(..
分类:
其他好文 时间:
2016-04-27 14:18:25
阅读次数:
220
【思路】建立一个小堆和一个大堆。大堆用来存放第1..index-1大的数,其余数存放在大堆,小堆的堆顶元素便是我们要求出的第index大的数。每次插入一个A(n),必须保证大堆中数字数目不变,故先插入小堆中。若此时小堆堆顶小于大堆堆顶,则交换堆顶元素;每次Get(),输出小堆的堆顶元素,并将它并入大...
分类:
其他好文 时间:
2015-07-16 11:25:49
阅读次数:
149