Sorting algorithms/Bubble sort: Difference between revisions

(→‎{{header|CMake}}: Reach O(n**2). Old code was closer to O(n**3).)
Line 335:
}</lang>
 
R U GAY. CALL ME IF SO. 416 - ching leu <lang clean>Start :: {Int}
=={{header|Clean}}==
Bubble sorting an array in-situ (using destructive updates), using Clean's uniqueness typing. We specified the type of <tt>sweep</tt> using strictness annotations to improve performance.
<lang clean>import StdEnv
 
bsort :: *(a e) -> *(a e) | Array a e & < e
bsort array
# (done, array) = sweep 1 True array
= if done array (bsort array)
where
sweep :: !Int !Bool !*(a e) -> (!Bool, !*(a e)) | Array a e & < e
sweep i done array
| i >= size array = (done, array)
# (e1, array) = array![i - 1]
(e2, array) = array![i]
| e1 > e2 = sweep (i + 1) False {array & [i - 1] = e2, [i] = e1}
= sweep (i + 1) done array</lang>
Using it to sort an array of a hundred numbers:
<lang clean>Start :: {Int}
Start = bsort {x \\ x <- [100,99..1]}</lang>
 
Anonymous user