Sorting algorithms/Bogosort: Difference between revisions
Content added Content deleted
(Added crystal implementation.) |
|||
Line 764: | Line 764: | ||
(do ((list list (nshuffle list))) |
(do ((list list (nshuffle list))) |
||
((sortedp list predicate) list)))</lang> |
((sortedp list predicate) list)))</lang> |
||
=={{header|Crystal}}== |
|||
<lang crystal>def knuthShuffle(items : Array) |
|||
i = items.size-1 |
|||
while i > 1 |
|||
j = Random.rand(0..i) |
|||
items.swap(i, j) |
|||
i -= 1 |
|||
end |
|||
end |
|||
def sorted?(items : Array) |
|||
prev = items[0] |
|||
items.each do |item| |
|||
if item < prev |
|||
return false |
|||
end |
|||
prev = item |
|||
end |
|||
return true |
|||
end |
|||
def bogoSort(items : Array) |
|||
while !sorted?(items) |
|||
knuthShuffle(items) |
|||
end |
|||
end</lang> |
|||
=={{header|D}}== |
=={{header|D}}== |