Sorting algorithms/Heapsort: Difference between revisions
Content added Content deleted
Line 885: | Line 885: | ||
sort_array (ar: ARRAY [INTEGER]) |
sort_array (ar: ARRAY [INTEGER]) |
||
-- Sorts array 'ar' in ascending order. |
-- Sorts array 'ar' in ascending order. |
||
require |
|||
not_empty: ar.count > 0 |
|||
local |
local |
||
i, j, r, l, m, n: INTEGER |
i, j, r, l, m, n: INTEGER |
||
Line 901: | Line 903: | ||
if l > 1 then |
if l > 1 then |
||
l := l - 1 |
l := l - 1 |
||
m := ar |
m := ar[l] |
||
else |
else |
||
m := ar |
m := ar[r] |
||
ar |
ar[r] := ar[1] |
||
r := r - 1 |
r := r - 1 |
||
if r = 1 then |
if r = 1 then |
||
ar |
ar[1]:=m |
||
sorted := True |
sorted := True |
||
end |
end |
||
Line 918: | Line 920: | ||
j > r |
j > r |
||
loop |
loop |
||
if (j < r) and (ar |
if (j < r) and (ar[j] < ar[j + 1]) then |
||
j := j + 1 |
j := j + 1 |
||
end |
end |
||
if m < ar |
if m < ar[j] then |
||
ar |
ar[i]:= ar[j] |
||
i := j |
i := j |
||
j := j + i |
j := j + i |
||
Line 929: | Line 931: | ||
end |
end |
||
end |
end |
||
ar |
ar[i]:= m |
||
end |
end |
||
end |
end |
||
ensure |
|||
sorted: is_sorted(ar) |
|||
end |
end |
||