Sorting algorithms/Bubble sort: Difference between revisions
Content added Content deleted
(→{{header|Prolog}}: alternative version) |
|||
Line 2,719: | Line 2,719: | ||
-> [1,2,3,4,4,5,6,8,9] |
-> [1,2,3,4,4,5,6,8,9] |
||
true.</pre> |
true.</pre> |
||
===Alternative version=== |
|||
Should be ISO (but tested only with GNU Prolog). |
|||
Note: doesn't constuct list for each swap, only for each pass. |
|||
<lang prolog>:- initialization(main). |
|||
bubble_sort(Xs,Res) :- |
|||
write(Xs), nl |
|||
, bubble_pass(Xs,Ys,Changed) |
|||
, ( Changed == true -> bubble_sort(Ys,Res) ; Res = Ys ) |
|||
. |
|||
bubble_pass(Xs,Res,Changed) :- |
|||
Xs = [X|Ys], Ys = [Y|Zs] |
|||
, ( X > Y -> H = Y, T = [X|Zs], Changed = true |
|||
; H = X, T = Ys |
|||
) |
|||
, Res = [H|R], bubble_pass(T,R,Changed) |
|||
; Res = Xs |
|||
. |
|||
test([8,9,1,3,4,2,6,5,4]). |
|||
main :- test(T), bubble_sort(T,_), halt.</lang> |
|||
{{Output}} |
|||
<pre>[8,9,1,3,4,2,6,5,4] |
|||
[8,1,3,4,2,6,5,4,9] |
|||
[1,3,4,2,6,5,4,8,9] |
|||
[1,3,2,4,5,4,6,8,9] |
|||
[1,2,3,4,4,5,6,8,9]</pre> |
|||
=={{header|PureBasic}}== |
=={{header|PureBasic}}== |