Sorting algorithms/Bubble sort: Difference between revisions
Content added Content deleted
(Add Shen solution) |
(Add Shen solution) |
||
Line 4,074: | Line 4,074: | ||
Original source: [http://seed7.sourceforge.net/algorith/sorting.htm#bubbleSort] |
Original source: [http://seed7.sourceforge.net/algorith/sorting.htm#bubbleSort] |
||
=={{header|Shen}}== |
=={{header|Shen}}== |
||
<lang shen>(tc +) |
|||
(define swap |
|||
{ (vector number) --> number --> number --> (vector number) } |
|||
A I1 I2 -> (let Z (<-vector A I1) |
|||
(do (vector-> A I1 (<-vector A I2)) |
|||
(vector-> A I2 Z)))) |
|||
(define one-pass |
|||
{ (vector number) --> number --> boolean --> number --> boolean } |
|||
A N Swapped N -> Swapped |
|||
A N Swapped I -> (if (> (<-vector A (- I 1)) (<-vector A I)) |
|||
(do (swap A (- I 1) I) |
|||
(one-pass A N true (+ I 1))) |
|||
(one-pass A N Swapped (+ I 1)))) |
|||
(define bubble-h |
|||
{ boolean --> (vector number) --> number --> (vector number) } |
|||
true A N -> (bubble-h (one-pass A N false 2) A N) |
|||
false A N -> A) |
|||
(define bubble-sort |
|||
{ (vector number) --> (vector number) } |
|||
A -> (let N (limit A) |
|||
(bubble-h (one-pass A N false 2) A N))) |
|||
(datatype some-globals |
|||
__________ |
|||
(value *arr*) : (vector number);) |
|||
(set *arr* (vector 5)) |
|||
(vector-> (value *arr*) 1 5) |
|||
(vector-> (value *arr*) 2 1) |
|||
(vector-> (value *arr*) 3 4) |
|||
(vector-> (value *arr*) 4 2) |
|||
(vector-> (value *arr*) 5 8) |
|||
(bubble-sort (value *arr*))</lang> |
|||
=={{header|Sidef}}== |
=={{header|Sidef}}== |