Написать псевдокод процедуры DELETEMIN(A) удаления минимального элемента из частично упорядоченного дерева, реализованного массивом «куча»

Написать псевдокод процедуры DELETEMIN(A) удаления минимального элемента из частично упорядоченного дерева, реализованного массивом «куча» (Решение → 26414)

Написать псевдокод процедуры DELETEMIN(A) удаления минимального элемента из частично упорядоченного дерева, реализованного массивом «куча» A. 2. Вывести не менее 5 начальных серий для оптимальной сходимости алгоритма многофазной фибоначчиевой сортировки с числом вспомогательных файлов m+1=9. Показать сходимость на примере одного из распределений с не менее чем 6 проходами.



Написать псевдокод процедуры DELETEMIN(A) удаления минимального элемента из частично упорядоченного дерева, реализованного массивом «куча» (Решение → 26414)

Procedure Insert (v- узел, wv-вес узла v, T-дерево);
begin
определить в дереве Т последний узел-лист i;
если i - левый сын, то найти родителя i-го узла – j, добавить узел v как правый сын узла j;
если i - правый сын, то найти следующий узел-лист j, являвшийся бы родителем для несуществующего узла (i+1), добавить узел v как левый сын узла j;
while wv<wj и v – не корень Т do
begin
обменять местами родительский узел j с узлом v;
найти новый родительский узел j для узла v;
end;
end;
function DeleteMin (T-дерево; n-количество узлов): узел;
begin
определить в дереве Т последний узел-лист i;
определить в дереве T корень — k;
v:=k; k:=i; n:=n-1;
while k<=n div 2 do
begin
найти левого — i и правого – (i+1)
сына узла k, имеющих вес wi и wi+1;
if wi<wi+1 then j:=i else j:=i+1;
if wj<wk then обменять местами
родителя k и сына j
else return(v);
end;
return(v);
end;
Программирование алгоритма реализации очереди с приоритетом на Паскале
program queue_priority;const maxsize=10;type prioritet=integer;
priorityQueue= recordT: array [1..maxsize] of prioritet;last: integer;end;var A: priorityQueue; x,y:prioritet; i:integer;
procedure makenull(var Q:priorityQueue);beginQ.last:=0;end; {создание пустой очереди, последний элемент 0}
procedure Insert(x:prioritet; var Q:priorityQueue);var i:integer;temp: pioritet;beginif Q.last>= maxsize thenbeginwriteln ('ochered zapolnena');halt (1);endelsebeginQ.last:=Q.last+1;Q.T[Q.last]:=x;i:=Q.last; {i - индекс текущей позиции x}while (i>1) and (Q.T[i]<Q.T[i div 2]) dobegin{перемещение х вверх по дереву путемобмена местами с родителями,имеющими больший приоритет}temp:=Q.T[i];Q.T[i]:=Q.T[i div 2];Q.T[i div 2]:=temp;i:= i div 2;end;end;end; {вставка элемента в очередь}
function DeleteMin (var Q:priorityQueue):prioritet;var i, j: integer;temp: prioritet;minimum: prioritet;beginif Q.last=0 thenbeginwriteln('ochered pusta');DeleteMin:=0endelse begin {1}minimum:=Q.T[1];Q.T[1]:=Q.T[Q.last];Q.last:=Q.last -1;i:=1;while i<=(Q.last div 2) do beginif (Q.T[2*i]<Q.T[2*i+1]) or (2*i=Q.last) thenj:=2*ielsej:=2*i+1;{j - будет сыном i с наименьшим приоритетом или,если 2*i=A.last будет просто сыном i}if (Q.T[i])>(Q.T[j]) thenbegin{обмен старого последнего элемента с сыном,имеющим наименьший приоритет}temp:=Q.T[i];Q.T[i]:=Q.T[j];Q.T[j]:=temp;i:=j;endelse DeleteMin:=minimum;{дальше перемещение невозможно}end; {while}DeleteMin:=minimum; {элемент дошел до места}end {1}end; {deletemin}
begin   {основная программа}makenull(A);writeln('sozdanie ocheredi s prioritetom -  10 elementov');for i:=1 to maxsize dobeginwrite('BBedite prioritet ');readln(x);Insert( x,A);end;writeln('derevo - ochered - massiv');for i:=1 to maxsize do write ('  ',A.T[i],' ');writeln;writeln ('udalenie s prioritetom ');y:= DeleteMin(A);writeln('y=',y);writeln('delete min priority iz ocheredi - massiv');for i:=1 to maxsize do write ('  ',A.T[i],' ');writeln;end.