码迷,mamicode.com
首页 >  
搜索关键字:最小堆    ( 426个结果
最小堆及其操作函数
前几天在做Kth Largest Element in an Array 时使用到了堆,通过那倒题目也了解到了堆的make_heap,push_heap,pop_heap操作,看了C++ reference中的讲解也明白了heap_sort是什么回事。于是想着自己实现以下这四个函数。 堆的定义: 任意节点小于它的所有后裔,最小元在堆的根上(堆序性)。 堆总是一棵完全树。 #include <ios...
分类:其他好文   时间:2015-07-14 18:16:02    阅读次数:109
基本数据结构之堆
堆的定义堆是一个完全二叉树或者近似的完全二叉树堆的性质 父结点的键值总是大于或等于(小于或等于)任何一个子节点的键值。 每个结点的左子树和右子树都是一个二叉堆(都是最大堆或最小堆)。堆的存储一般都用数组来表示堆,i结点的父结点下标就为(i – 1) / 2。它的左右子结点下标分别为2 * i + 1和2 * i + 2 堆的特点插入元素和弹出堆顶元素的时间复杂度lg(n) 判断序列是不是堆根据性质判...
分类:其他好文   时间:2015-07-13 22:28:39    阅读次数:130
(算法)堆与堆排序
主要内容:1、什么是堆?2、如何建堆3、堆排序4、参考代码一、什么是堆?“堆”是个很有趣的数据结构,是个完全二叉树。“堆”的特性:每个节点的键值一定总是大于(或小于)它的父节点(大于:称为“最大堆”,小于:称为“最小堆”),或者说每个节点总是大于或小于它的子节点。对于最大堆而言,根节点为最大值;对于...
分类:编程语言   时间:2015-07-01 13:40:31    阅读次数:161
排序算法-堆排序
堆排序算法是建立在堆这种数据结构的基础上,其实堆听着很高端,其实很简单,就是一个二叉树,但是又特殊条件,就是其父节点比孩子节点都大(或都小)的堆称为最大堆(最小堆),瞬间感觉很简单了,最简单的保存方法就是直接用数组来保存。 给出一组数,我们要使用堆排序,首先需要建堆,但是这一组数首先肯定是不满足上面堆的性质的,所以我们需要调整,让他满足堆得性质,变成一个堆,怎么调整呢?拿最大堆来说,就是对于一个节...
分类:编程语言   时间:2015-06-22 22:21:57    阅读次数:203
PAT树_层序遍历叶节点、中序建树后序输出、AVL树的根、二叉树路径存在性判定、奇妙的完全二叉搜索树、最小堆路径、文件路由
03-树1. List Leaves (25)Given a tree, you are supposed to list all the leaves in the order of top down, and left to right.Input Specification:Each inpu...
分类:其他好文   时间:2015-06-21 07:10:18    阅读次数:305
优先队列及最小堆最大堆
为什么优先队列里默认是堆(heap)实现,默认是优先级高的出队,定义结构体重载函数为什么要按照从小到大排序?原来是自己对优先队列还不太了解: 1 堆     1.1 简介 n个关键字序列Kl,K2,…,Kn称为(Heap),当且仅当该序列满足如下性质(简称为堆性质): (1)ki=号。//k(i)相当于二叉树的非叶结点,K(2i)则是左孩子,k(2i+1)是右孩子 若...
分类:其他好文   时间:2015-06-20 17:06:28    阅读次数:124
堆的判断(1098)
编写程序判断以下给出的整数序列是否为最小堆。Description第一行是元素的个数n;第二行是n个整数序列。Input如果是小根堆,输出Yes,否者输出No。Output123 10100 86 48 73 35 39 42 57 66 2...
分类:其他好文   时间:2015-06-15 23:34:44    阅读次数:595
golang 高效低精度定时器实现
golang默认定时器是通过time模块实现的,不管是golang,libev,libevent的定时器都是通过最小堆实现的,通过最小堆实现的定时器加入定时器时间复杂度为O(lgn),在需要大量定时器时效率较低,所以Linux提供了基于时间轮的实现,我们本次提供的定时器实现就是标准的Linux时间轮实现方式。当然,我是把Skynet(https://github.com/cloudwu/skyne...
分类:其他好文   时间:2015-05-31 20:13:33    阅读次数:240
数据结构排序-堆排序
堆排序就是利用了最大堆(或最小堆)堆顶记录的关键字最大(或最小)这一特征,使得在当前无序区中选取最大(或最小)关键字变得简单。以最大堆为例,它的基本思想就是:先将初始文件R[1..n]建成一个最大堆,此堆为初始的无序区;再将关键字最大的记录R[1](即堆顶)和无序区的最后一个记录R[n]交换,由此得...
分类:编程语言   时间:2015-05-28 00:10:17    阅读次数:177
426条   上一页 1 ... 29 30 31 32 33 ... 43 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!