怎样从堆中删除最小元素 pascal

[复制链接]
查看11 | 回复3 | 2010-5-16 09:06:39 | 显示全部楼层 |阅读模式
如何将一个数组中删除最小2个元素,然后插入它们之和?

回复

使用道具 举报

千问 | 2010-5-16 09:06:39 | 显示全部楼层
删除一个元素的方法是:
把堆顶元素与堆中最后一个元素交换,然后删掉最后一个元素,最后从堆顶开始向下维护堆(因为交换后明显不是堆了)。插入一个元素的方法是:
在堆尾插入一个新元素,然后向上维护堆就好了。代码的话我这里暂时没有,等我回学校后找我吧。QQ:422033281
回复

使用道具 举报

千问 | 2010-5-16 09:06:39 | 显示全部楼层
翻译的楼上代码:dat:array [0..MAXSIZE-1] of integer;function DelElement(index:integer):boolean;var i:integer;beginif (index > MAXSIZE) and (index < 0 ) then exit(false);for i
回复

使用道具 举报

千问 | 2010-5-16 09:06:39 | 显示全部楼层
const n=100;var a:array[1..n] of integer;
b,c,d,e,f:integer;
temp:integer;beginramdonize;for b:=1 to n do a:=ramdon(100);for b:=1 to n-1 dofor c:=b+1 to n
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行