Just another update

This commit is contained in:
Ingy döt Net 2015-02-20 00:35:01 -05:00
parent a25938f123
commit 00a190b0a6
6591 changed files with 94363 additions and 23227 deletions

View file

@ -0,0 +1,46 @@
$ include "seed7_05.s7i";
const proc: beadSort (inout array integer: a) is func
local
var integer: max is 0;
var integer: sum is 0;
var array bitset: beads is 0 times {};
var integer: i is 0;
var integer: j is 0;
begin
beads := length(a) times {};
for i range 1 to length(a) do
if a[i] > max then
max := a[i];
end if;
beads[i] := {1 .. a[i]};
end for;
for j range 1 to max do
sum := 0;
for i range 1 to length(a) do
sum +:= ord(j in beads[i]);
excl(beads[i], j);
end for;
for i range length(a) - sum + 1 to length(a) do
incl(beads[i], j);
end for;
end for;
for i range 1 to length(a) do
for j range 1 to max until j not in beads[i] do
noop;
end for;
a[i] := pred(j);
end for;
end func;
const proc: main is func
local
var array integer: a is [] (5, 3, 1, 7, 4, 1, 1, 20);
var integer: num is 0;
begin
beadSort(a);
for num range a do
write(num <& " ");
end for;
writeln;
end func;