RosettaCodeData/Task/Sort-numbers-lexicographically/FreeBASIC/sort-numbers-lexicographica...

42 lines
790 B
Plaintext

function leq( n as integer, m as integer ) as boolean
if str(n)<=str(m) then return true else return false
end function
sub shellsort(s() as integer)
dim as integer n = ubound(s)
dim as integer i, inc = n
dim as boolean done
do
inc\=2.2
if inc = 0 then inc = 1
do
done = false
for i = 0 to n - inc
if leq(s(i+inc), s(i)) then
swap s(i), s(i + inc)
done = true
end if
next
loop until done = 0
loop until inc = 1
end sub
dim as integer n, i
input n
dim as integer s(0 to n-1)
for i = 0 to n-1
s(i) = i+1
next i
shellsort(s())
print "[";
for i = 0 to n-1
print s(i);
if i<n-1 then print ", ";
next i
print "]"