怎样从堆中删除最小元素 pascal
发布网友
发布时间:2022-05-15 18:35
我来回答
共4个回答
热心网友
时间:2024-02-26 10:30
删除一个元素的方法是:
把堆顶元素与堆中最后一个元素交换,然后删掉最后一个元素,最后从堆顶开始向下维护堆(因为交换后明显不是堆了)。
插入一个元素的方法是:
在堆尾插入一个新元素,然后向上维护堆就好了。
代码的话我这里暂时没有,等我回学校后找我吧。
QQ:422033281
热心网友
时间:2024-02-26 10:30
翻译的楼上代码:
dat:array [0..MAXSIZE-1] of integer;
function DelElement(index:integer):boolean;
var i:integer;
begin
if (index > MAXSIZE) and (index < 0 ) then exit(false);
for i := index to MAXSIZE-2 do
dat[i] := dat[i + 1];
for i := 0 to MAXISZE-2 do
write(dat[i]);
DelElement:=true;
}
热心网友
时间:2024-02-26 10:31
const n=100;
var a:array[1..n] of integer;
b,c,d,e,f:integer;
temp:integer;
begin
ramdonize;
for b:=1 to n do a[b]:=ramdon(100);
for b:=1 to n-1 do
for c:=b+1 to n do
if a[b]>a[c] then
begin
temp:=a[b];a[b]:=a[c];a[c]:=temp;
end.
d:=a[1];
e:=a[2];
for f:=1 to 2 do a[f]:=0;
a[f]:=d+e;
for e:=1 to n do write(a[e]);
writeln;
end.
参考资料:172.0.11.3
热心网友
时间:2024-02-26 10:31
int dat[MAXSIZE-1]
boolean DelElement(int index)
{
if(index > MAXSIZE && index < 0 ) return false;
for(int i = index; i< MAXSIZE-1;i++)
dat[i] = dat[i + 1];
for(int i = 0; i < MAXISZE-1; i++)
printf("%d ", dat[i]);
return true;
}