Sorting algorithms/Stooge sort: Difference between revisions

added FreeBASIC
m (→‎{{header|Sidef}}: minor code improvements)
(added FreeBASIC)
Line 581:
end subroutine
end program</lang>
=={{header|FreeBASIC}}==
<lang freebasic>' version 23-10-2016
' compile with: fbc -s console
 
Sub stoogesort(s() As Long, l As Long, r As Long)
 
If s(r) < s(l) Then
Swap s(r), s(l)
End If
 
If r - l > 1 Then
Var t = (r - l +1) \ 3
stoogesort(s(), l , r - t)
stoogesort(s(), l + t, r )
stoogesort(s(), l , r - t)
End If
End Sub
 
' ------=< MAIN >=------
 
Dim As Long i, array(-7 To 7)
Dim As Long a = LBound(array), b = UBound(array)
 
Randomize Timer
For i = a To b : array(i) = i : Next
For i = a To b ' little shuffle
Swap array(i), array(Int(Rnd * (b - a +1)) + a)
Next
 
Print "unsorted ";
For i = a To b : Print Using "####"; array(i); : Next : Print
 
stoogesort(array(), LBound(array), UBound(array))
 
Print " sorted ";
For i = a To b : Print Using "####"; array(i); : Next : Print
 
' empty keyboard buffer
While Inkey <> "" : Wend
Print : Print "hit any key to end program"
Sleep
End</lang>
{{out}}
<pre>Unsorted
0 3 -6 2 1 -4 7 5 6 -3 4 -7 -1 -5 -2
 
After heapsort
-7 -6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6 7</pre>
 
=={{header|Go}}==
457

edits