Sorting algorithms/Bubble sort: Difference between revisions

→‎{{header|Oz}}: added functional version
(→‎{{header|Oz}}: improve: make sort range smaller after each pass)
(→‎{{header|Oz}}: added functional version)
Line 927:
 
=={{header|Oz}}==
In-place sorting of mutable arrays:
<lang oz>declare
proc {BubbleSort Arr}
Line 950 ⟶ 951:
{BubbleSort Arr}
{Inspect Arr}</lang>
 
Purely-functional sorting of immutable lists:
<lang oz>declare
local
fun {Loop Xs Changed ?IsSorted}
case Xs
of X1|X2|Xr andthen X1 > X2 then
X2|{Loop X1|Xr true IsSorted}
[] X|Xr then
X|{Loop Xr Changed IsSorted}
[] nil then
IsSorted = {Not Changed}
nil
end
end
in
fun {BubbleSort Xs}
IsSorted
Result = {Loop Xs false ?IsSorted}
in
if IsSorted then Result
else {BubbleSort Result}
end
end
end
in
{Show {BubbleSort [3 1 4 1 5 9 2 6 5]}}</lang>
 
=={{header|Perl}}==
Anonymous user