Sorting algorithms/Gnome sort: Difference between revisions

Content deleted Content added
Sonia (talk | contribs)
Go solution
Line 526:
}
}</lang>
 
=={{header|Groovy}}==
Solution:
<lang groovy>def checkSwap = { list, i, j ->
def doSwap = (list[i] > list[j])
if (doSwap) { list[i] ^= list[j]; list[j] ^= list[i]; list[i] ^= list[j]}
doSwap
}
 
def gnomeSort = { input ->
def swap = checkSwap.curry(input)
def size = input.size()
def index = 1
while (index < input.size()) {
index += (swap(index-1, index) && index > 1) ? -1 : 1
}
input
}</lang>
 
Test:
<lang groovy>println (gnomeSort([23,76,99,58,97,57,35,89,51,38,95,92,24,46,31,24,14,12,57,78,4]))
println (gnomeSort([88,18,31,44,4,0,8,81,14,78,20,76,84,33,73,75,82,5,62,70,12,7,1]))</lang>
 
Output:
<pre>[4, 12, 14, 23, 24, 24, 31, 35, 38, 46, 51, 57, 57, 58, 76, 78, 89, 92, 95, 97, 99]
[0, 1, 4, 5, 7, 8, 12, 14, 18, 20, 31, 33, 44, 62, 70, 73, 75, 76, 78, 81, 82, 84, 88]</pre>
 
=={{header|Haskell}}==