Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,40 @@
|
|||
proc HeapSort(Array, Size);
|
||||
int Array, Size;
|
||||
int First, Last, T;
|
||||
|
||||
proc Sift(First, Count);
|
||||
int First, Count;
|
||||
int Root, Child, T;
|
||||
[Root:= First;
|
||||
loop [if Root*2 + 1 >= Count then quit;
|
||||
Child:= Root*2 + 1;
|
||||
if Child < Count-1 and Array(Child) < Array(Child+1) then
|
||||
Child:= Child+1;
|
||||
if Array(Root) < Array(Child) then
|
||||
[T:= Array(Root); Array(Root):= Array(Child); Array(Child):= T;
|
||||
Root:= Child;
|
||||
]
|
||||
else quit;
|
||||
];
|
||||
];
|
||||
|
||||
[First:= (Size-1)/2 - 1;
|
||||
Last:= Size-1;
|
||||
while First >= 0 do
|
||||
[Sift(First, Size-1);
|
||||
First:= First-1;
|
||||
];
|
||||
while Last > 0 do
|
||||
[T:= Array(Last); Array(Last):= Array(0); Array(0):= T;
|
||||
Sift(0, Last);
|
||||
Last:= Last-1;
|
||||
];
|
||||
];
|
||||
|
||||
int Array, Size, I;
|
||||
[Array:= [4, 65, 2, 31, 0, 99, 2, 8, 3, 782, 1];
|
||||
Size:= 11;
|
||||
HeapSort(Array, Size);
|
||||
for I:= 0, Size-1 do
|
||||
[IntOut(0, Array(I)); ChOut(0, ^ )];
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue