all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
|
|
@ -0,0 +1,39 @@
|
|||
const proc: downheap (inout array elemType: arr, in var integer: k, in integer: n) is func
|
||||
local
|
||||
var elemType: help is elemType.value;
|
||||
var integer: j is 0;
|
||||
begin
|
||||
if k <= n div 2 then
|
||||
help := arr[k];
|
||||
repeat
|
||||
j := 2 * k;
|
||||
if j < n and arr[j] < arr[succ(j)] then
|
||||
incr(j);
|
||||
end if;
|
||||
if help < arr[j] then
|
||||
arr[k] := arr[j];
|
||||
k := j;
|
||||
end if;
|
||||
until help >= arr[j] or k > n div 2;
|
||||
arr[k] := help;
|
||||
end if;
|
||||
end func;
|
||||
|
||||
const proc: heapSort (inout array elemType: arr) is func
|
||||
local
|
||||
var integer: n is 0;
|
||||
var integer: k is 0;
|
||||
var elemType: help is elemType.value;
|
||||
begin
|
||||
n := length(arr);
|
||||
for k range n div 2 downto 1 do
|
||||
downheap(arr, k, n);
|
||||
end for;
|
||||
repeat
|
||||
help := arr[1];
|
||||
arr[1] := arr[n];
|
||||
arr[n] := help;
|
||||
decr(n);
|
||||
downheap(arr, 1, n);
|
||||
until n <= 1;
|
||||
end func;
|
||||
Loading…
Add table
Add a link
Reference in a new issue