主题:急问: 一个有关最大堆的问题
td98298
[专家分:10] 发布于 2008-04-10 20:42:00
在建立堆的过程中,传统的方法是采用一个顺序数组,
请问:(这个顺序数组是不是要先给定大小?)
我想形成一个最大堆,但是堆的大小不确定,
请问:(除了最初给定一个非常大的数组外,还有没有其他的方法?)
回复列表 (共8个回复)
沙发
boxertony [专家分:23030] 发布于 2008-04-11 14:07:00
动态申请。
板凳
td98298 [专家分:10] 发布于 2008-04-11 20:28:00
不好意思,我是想问一下如果堆的大小随时间变化的如何编。
我只知道先设定一个非常大的数组这个办法,请问是否还有其它办法
3 楼
boxertony [专家分:23030] 发布于 2008-04-11 21:38:00
堆又不是你管理的,那是系统管理的,你只要在需要时使用malloc或者new申请就行了,愿意申请多少就多少啊。
4 楼
td98298 [专家分:10] 发布于 2008-04-12 22:05:00
谢谢,我的情况是这样的,
第一步,建立一个实数型最大堆(可以用动态数组保存)
第二步,删除根结点
第三步,补充任意多个的实数
第三步 我只知道开始分配一个超大的数组,顺序加入元素后,然后调整成最大堆,可我不想分配超大的数组,怕浪费空间,有没有其他好的方法
5 楼
boxertony [专家分:23030] 发布于 2008-04-13 12:21:00
还是不太明白你要做什么。要对庞大数据排序?还是只是为了找出庞大数据的最大数?还是其他的?
6 楼
sws_lichuanji [专家分:190] 发布于 2008-04-14 13:11:00
你的意思应该是说:如果数据的个数是不确定的并且不想通过申请很大的数组来存放(因为这样会浪费内存),怎么解决吧?
7 楼
sws_lichuanji [专家分:190] 发布于 2008-04-14 13:25:00
用这个函数试试:void *realloc( void *memblock, size_t size );
Parameters
memblock
Pointer to previously allocated memory block
size
New size in bytes
8 楼
cylixstar [专家分:60] 发布于 2008-04-22 01:03:00
用标准模板库的vector吧,简单又高效
我来回复