Just another update
This commit is contained in:
parent
a25938f123
commit
00a190b0a6
6591 changed files with 94363 additions and 23227 deletions
|
|
@ -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;
|
||||
Loading…
Add table
Add a link
Reference in a new issue