Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,27 @@
|
|||
include c:\cxpl\codes;
|
||||
|
||||
proc BeadSort(Array, Length); \Sort Array into increasing order
|
||||
int Array, Length; \Array contents range 0..31; number of items
|
||||
int Row, I, J, T, C;
|
||||
[Row:= Reserve(Length*4); \each Row has room for 32 beads
|
||||
for I:= 0 to Length-1 do \each Row gets Array(I) number of beads
|
||||
Row(I):= ~-1<<Array(I); \(beware for 80186..Pentium <<32 doesn't shift)
|
||||
for J:= 1 to Length-1 do
|
||||
for I:= Length-1 downto J do
|
||||
[T:= Row(I-1) & ~Row(I); \up to 31 beads fall in a single pass
|
||||
Row(I-1):= Row(I-1) | T; \(|=xor, !=or)
|
||||
Row(I):= Row(I) | T;
|
||||
];
|
||||
for I:= 0 to Length-1 do \count beads in each Row
|
||||
[C:= 0; T:= Row(I);
|
||||
while T do
|
||||
[if T&1 then C:= C+1; T:= T>>1];
|
||||
Array(I):= C; \count provides sorted order
|
||||
];
|
||||
];
|
||||
|
||||
int A, I;
|
||||
[A:= [3, 1, 4, 1, 25, 9, 2, 6, 5, 0];
|
||||
BeadSort(A, 10);
|
||||
for I:= 0 to 10-1 do [IntOut(0, A(I)); ChOut(0, ^ )];
|
||||
]
|
||||
Loading…
Add table
Add a link
Reference in a new issue