begin H[i]:=H[i
begin
H[i]:=H[i div 2];
i:=i div 2;
end; {while}
H[i]:=x;
code:=0;
end; {if}
end; {insert}
function delete_min(var H: array [0..n] of integer;
var Num:integer;
var code:integer):integer;
var i,child:integer;
last_el:element;
stop:boolean;
begin
if Num=0
then
code:=2
else
begin
delete_min:=H[1];
last_el:=H[Num];
Num:=Num-1;
i:=1; stop:=False;
while (2*i<=Num) and (not stop) do
begin
child:=2*i;
if child < Num then
if H[child+1] < H[child]
then child:=child+1;
if last_el > H[child] then
begin
H[i]:=H[child];
i:=child;
end
else
stop:=True;
end; {while}
H[i]:=last_el;
code:=0;
end; {if}
end; {delete_min}
Трудоемкость операции добавления определяется количеством выполнения цикла while и не превышает количества уровней кучи, которое равно Log2 (Num).
<<< Предыдущий урок Следующий урок >>>
| Новости | Регистрация | Курсы | Карта сайта | Контактная информация |
Курс
Индекс
Элементарные функции
Линейные уравнения
Нелинейные уравнения
Случайные числа