- If the value at the end is smaller than the value at the start, swap them.
- If there are 3 or more elements in the current list subset,
- Stooge sort the initial 2/3 of the list
- Stooge sort the final 2/3 of the list
- Stooge sort the initial 2/3 of the list again
Implementation in Redcode:
org inner
stack equ outer-2
temp equ outer-1
outer mov p, <stack
sub.ba temp, @stack
mov p, <stack
add.b temp, @stack
sub.ba temp, p
inner slt {p, @p
jmp noexch, }p
mov @p, temp
p mov FIRST+LENGTH, FIRST
mov temp, }p
noexch mov.ab p, temp
sub.b p, temp
div #3, temp
jmn outer, temp
finished mov.f >stack, p
jmn inner, p
2 comments:
There's a potential improvement to the algorithm:
Only resort the initial 2/3 if a change is made when the final 2/3 is sorted.
Are any other improvements possible?
No. You are wrong.
This improvement attempt leads to incorrect sorting.
Post a Comment