前几天同学参加腾讯实习的网络笔试,闲聊中得知一道编程题目,最近也在看算法,觉得刚好用来练手。这题觉得以最小堆实现比较方便,在C++中,以中 make_heap(), push_heap(), pop_heap(), sort_heap()四个函数管理堆十分方便。make_heap(RandomIt ...
分类:
其他好文 时间:
2015-04-11 14:31:56
阅读次数:
267
使用STL中priority_queue(由最大最小堆实现的)来实现。注意传递参数的时候需要传递三个。模板声明:priority_queue这里的实现要求输入完全正确,所以代码移植性非常差。#include #include #include using namespace std;typedef ...
分类:
编程语言 时间:
2015-04-10 14:57:29
阅读次数:
179
#include
#include
using namespace std;
template
class MinHeap
{
public:
MinHeap(int sz=DefaultSize)
{
capacity = sz>DefaultSize?sz:DefaultSize;
heap = new Type[capacity];
size = 0;
}
MinHea...
分类:
编程语言 时间:
2015-04-08 18:05:40
阅读次数:
149
1. 堆的概念堆的数据结构是一种数组对象;堆可以视作为一颗完全二叉树(其中,树的每一层都填满,最后一层可能除外);树中每个节点与数组中存放该节点值的元素对应;堆可以划分为两类:a) 最大堆:除了根节点,有A[parent(i)] >= A[i],最大元素即根节点;b) 最小堆:除了根节点,有A[pa...
分类:
编程语言 时间:
2015-04-08 12:22:57
阅读次数:
120
设计一个最小堆,要求实现push、pop、top、getMin几个功能。 思路:主要问题在于getMin,必须是一个常数级的查找返回,因此最好是每push一个就和当前min进行比较,始终保存min。 class MinStack {public: MinStack() { head = new Li...
分类:
其他好文 时间:
2015-04-07 13:47:08
阅读次数:
127
基于partition做的,当index!=k时一直while循环 如果indexk,在前面找 另外最后的结果如果是0到k-1这k个数包括k-1的话,那么开始k要-1传入数组 如果不包括k-1的话,那么可以不用减1 复杂度为NlogN 另外有NlogK的算法,利用最小堆 利用partition的解法...
分类:
其他好文 时间:
2015-04-07 11:35:03
阅读次数:
177
自我感觉代码写的比较乱,这方面要好好注意一下。总结:1.在使用vector::size_type 类似的类型时,千万要注意循环的条件判断,很容易发生溢出的危险!所以我最后很懒的选择使用int - -。2.下标表示和元素个数表示之间的细微差别。下标之间的变换关系:父节点 parent(i)=(i-1)...
分类:
编程语言 时间:
2015-04-05 17:16:34
阅读次数:
151
这是我在网上找到的关于Eclipse的优化方法,非常给力,特转来以作收藏。首先了解下JVM中几个相关的概念:Xms:最小堆大小Xmx:最大堆大小Xmn:年轻代堆大小Xss:每个线程的堆大小PermSize:初始持久代大小MaxPermSize:最大持久代大小一般Xms、Xmx设置相同,PermSiz...
分类:
系统相关 时间:
2015-03-31 17:50:08
阅读次数:
175
堆有最大堆和最小堆之分,最大堆就是每个节点的值都>=其左右孩子(如果有的话)值的完全二叉树。最小堆便是每个节点的值都<=其左右孩子值的完全二叉树。...
分类:
其他好文 时间:
2015-03-31 10:49:09
阅读次数:
148
也有好几天没记录算法学习情况了,这两天看了《算法导论》的第二部分,排序和顺序统计学,记录一下,也顺便增强记忆1.堆排序 就是最大堆和最小堆,用一维数组存储,数据结构是完全二叉树。主要过程分为构建最大/最小堆,插入操作,弹出最大值,取最大/最小值,改变堆中的权值。 构建堆就是从第一个非叶子节点...
分类:
编程语言 时间:
2015-03-21 22:50:14
阅读次数:
215