1栈的面试题&卡塔兰数
2树
伸展树
http://www.jb51.cc/article/p-kptrnthb-y.html
http://www.jb51.cc/article/p-fguxuhxx-y.html
http://www.lydsy.com/JudgeOnline/problem.php?id=1500
3计算机内存
4Hash实现
5堆的一个用法
典型利用:
选择问题:输入N个元素以及整数K,这N个元素的集可以是全序的,找出第K个最大的元素;
算法一、
把这些元素排序,返回第K个值,通过各种排序算法;
算法二、
将K个元素读入数组,并将其排序,从大到小,最小的元素在第K个位置上。然后一个一个处理剩余的元素。当一个元素处理时,它先与数组中的第K个数比较,如果该元素大,将第K个数删除,将它插入到剩余的K-1个队列中,算法结束时,数组上第K个位置上的元素就为所求;该算法的时间复杂度为O(N*K);
注意:对于任意的K,我们可以求解对称问题,找出第(N-K+1)个最小元素。从而中位数K=N/2是时间使用最多的所求元素;
算法三、
将N个元素建堆,执行K次DeleteMax操作。