回 帖 发 新 帖 刷新版面

主题:急问: 一个有关最大堆的问题

在建立堆的过程中,传统的方法是采用一个顺序数组,

请问:(这个顺序数组是不是要先给定大小?)

我想形成一个最大堆,但是堆的大小不确定,

请问:(除了最初给定一个非常大的数组外,还有没有其他的方法?)

回复列表 (共8个回复)

沙发

动态申请。

板凳

不好意思,我是想问一下如果堆的大小随时间变化的如何编。
   我只知道先设定一个非常大的数组这个办法,请问是否还有其它办法

3 楼

堆又不是你管理的,那是系统管理的,你只要在需要时使用malloc或者new申请就行了,愿意申请多少就多少啊。

4 楼


谢谢,我的情况是这样的,
    第一步,建立一个实数型最大堆(可以用动态数组保存)
    第二步,删除根结点
    第三步,补充任意多个的实数
    第三步 我只知道开始分配一个超大的数组,顺序加入元素后,然后调整成最大堆,可我不想分配超大的数组,怕浪费空间,有没有其他好的方法

5 楼

还是不太明白你要做什么。要对庞大数据排序?还是只是为了找出庞大数据的最大数?还是其他的?

6 楼

你的意思应该是说:如果数据的个数是不确定的并且不想通过申请很大的数组来存放(因为这样会浪费内存),怎么解决吧?

7 楼

用这个函数试试:void *realloc( void *memblock, size_t size );

Parameters

memblock

Pointer to previously allocated memory block

size

New size in bytes

8 楼

用标准模板库的vector吧,简单又高效

我来回复

您尚未登录,请登录后再回复。点此登录或注册