关于动态实现

来源:百度知道 编辑:UC知道 时间:2024/09/20 21:27:11
(1)给定一组数据(随便),构造最小堆;
(2)利用同一组数据为输入序列,实现优先权队列。
如何将这个问题动态实现?
QQ 478604094 如果可以的话 希望发下源代码到邮箱

/**
根据你需要java的要求, 写了一个实现。
这个是一个整数最小优先的堆,只实现了加入功能。
应该还有删除,清空等功能,但并不是必须的。
你可以自己尝试实现。

测试为生成一组随机数,加入队列,每次加入后都察看一下堆的最优先元素是多少。

如果还有疑问 ,
至邮件:tazerkinq@163.com
*/

public class Heap {

int[] heap; //堆的储存空间
int size; //当前的元素的数量

Heap() {
size = 0; //初始化数量为0
heap = new int[1024]; //预留空间1024,为了操作方便,0位置被弃用
}

void add(int e){ //加入新的元素,也是维护堆的主要地方之一
int i = ++size; //数量增加一, 并用临时变量记录此位置
while(( 1<i ) && ( e<heap[i/2] )){ //判断e是否小于父节点的元素, 如否,则停止
heap[i] = heap[i/2]; //如是, 则移动父节点元素当i记录位置
i/=2; //i继续向上迭代,指向刚才父节点的位置
}
heap[i] = e; //该位置即为元素最终位置
}

int peek(){ //返回堆头的元素
return heap[1]; //数组下标1的元素即是
} //当然如果当前元素为空的话,返回的则是初始值

int size(){ //返回当前元素数目
return size;
}

public static