码迷,mamicode.com
首页 >  
搜索关键字:建堆    ( 167个结果
java 堆排序的实现
堆就是一个完全二叉树,堆要求是指 该节点大于它的两个子节点。而两个字节点大小不一定。堆排序的最坏时间复杂度为nlog(n),平均也为nlog(n),占用空间为o(1),是一种比较排序算法。堆排序也可以用于找最大的k个数。时间复杂度为klog(n),因为建堆后,每次循环实际上都生成一个最大数。下面见代...
分类:编程语言   时间:2015-04-28 11:16:36    阅读次数:161
数据结构之二叉堆(构建堆,堆排序)-(七)
/* * 堆的性质(最小堆为例): * 0.根节点为最小值 * 1.堆可以看做是一个完全二叉树(即孩子节点从左向右排列) * 2.堆的高度lgn/lg2(n为节点的数目) * 3.第i节点的左孩子节点是2*i+1,右孩子节点为2*i+2 * 4.以任意一个节点作为根节点,那么该节点都是堆 * 5.可以用一个数据来表示堆 */ /* * 构建堆的原理: * 上滤 * 在最后一个节点后建立一个空节点...
分类:编程语言   时间:2015-04-23 21:47:50    阅读次数:182
堆排序
这里以小顶堆为例:思路:对于堆排序来说,首先需要做的是要建堆,建堆是一个不断调整堆的过程,能够在线性时间内完成。堆排序的过程1、建堆,建堆是不断调整堆的过程,从len/2处开始调整,一直到第一个节点,此处len是堆中元素的个数。建堆的过程是线性的过程,从len/2到0处一直调用调整堆的过程,相当于o...
分类:编程语言   时间:2015-04-10 23:47:55    阅读次数:175
堆排序分析及优化
堆排序,是利用堆结构进行排序,一般是利用最大堆,即根节点比左右两个子树的节点都大,具体算法步骤如下。 一、创建堆         首先将数组中的元素调整成堆,对应下面程序中的createHeap(List list)方法。创建堆就是从树中最后一个内节点(下标为(n-1)/2)开始调整数组中元素的位置,使以这个内节点为根的子树满足堆的结构。即依次将以(n-1)/2、(n-1)/2-1、(n-1)...
分类:编程语言   时间:2015-04-09 17:38:23    阅读次数:332
算法导论——最大堆,以及堆排序算法
本段代码实现了建堆,维护最大堆的性质,堆排序函数,优先队列的相关函数(插入,找最大值,提取出最大值,增加关键值,增加元素),以及相关的测试 1 #include 2 #include 3 #include 4 #define LEFT(i) (2 * i) 5 #define RIG...
分类:编程语言   时间:2015-04-06 23:02:56    阅读次数:193
PAT 05-树6 Path in a Heap
这次的作业完全是依葫芦画瓢,参照云课堂《数据结构》(http://mooc.study.163.com/learn/ZJU-1000033001#/learn/content)中何钦铭老师课件中有关建堆及插入的内容,再加上自己写的一个矬函数(竟然传了4个参数),OK了!题设要求及代码实现如下 1 ....
分类:其他好文   时间:2015-04-05 21:48:49    阅读次数:123
LeetCode做题笔记之四
这次一口气放9道题~LeetCode23题,Hard!归并K个有序链表。使用堆来做,一开始把K个链表的第一个元素放进数组,然后建堆。之后取出第一个元素(如果这个元素是nil元素,直接退出)放进归并后的链表,再从这个元素所在的链表取第一个元素放到原来元素的位子上,然后重新维护堆性..
分类:其他好文   时间:2015-04-02 11:49:58    阅读次数:192
排序和顺序统计学(1)
也有好几天没记录算法学习情况了,这两天看了《算法导论》的第二部分,排序和顺序统计学,记录一下,也顺便增强记忆1.堆排序 就是最大堆和最小堆,用一维数组存储,数据结构是完全二叉树。主要过程分为构建最大/最小堆,插入操作,弹出最大值,取最大/最小值,改变堆中的权值。 构建堆就是从第一个非叶子节点...
分类:编程语言   时间:2015-03-21 22:50:14    阅读次数:215
堆排序
堆排序分为建堆,调整堆两个步骤。 关键是分清数组大小和堆大小,因为数组的最后几个元素已经是排好序,相当于从堆中移除了。 ``` #include using namespace std; void HeapAdjust(int *a, int i, int size) { i...
分类:编程语言   时间:2015-03-21 11:24:34    阅读次数:218
排序 堆的实现和利用堆来排序
排序 堆的实现和利用堆来排序排序 堆的实现和利用堆来排序Table of Contents一些基本的定义heapy:调整堆build:建堆insert:插入新的元素removetop:取出堆顶现在来使用堆来排序,只要每次都 removetop 就行了堆是最有趣的数据结构,看过《算法导论》的都会很容易...
分类:编程语言   时间:2015-03-17 00:34:16    阅读次数:167
167条   上一页 1 ... 11 12 13 14 15 ... 17 下一页
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!