Sorting algorithms/Gnome sort: Difference between revisions
Content added Content deleted
m (→{{header|FreeBASIC}}: minor change) |
(Added Kotlin) |
||
Line 1,278: | Line 1,278: | ||
<pre>unsorted: [13,15,6,11,3,19,17,20,2,18,9,14,8,10,16,7,12,1,4,5] |
<pre>unsorted: [13,15,6,11,3,19,17,20,2,18,9,14,8,10,16,7,12,1,4,5] |
||
sorted: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]</pre> |
sorted: [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20]</pre> |
||
=={{header|Kotlin}}== |
|||
<lang scala>// version 1.1.0 |
|||
fun <T: Comparable<T>> gnomeSort(a: Array<T>, ascending: Boolean = true) { |
|||
var i = 1 |
|||
var j = 2 |
|||
while (i < a.size) |
|||
if (ascending && (a[i - 1] <= a[i]) || |
|||
!ascending && (a[i - 1] >= a[i])) |
|||
i = j++ |
|||
else { |
|||
val temp = a[i - 1] |
|||
a[i - 1] = a[i] |
|||
a[i--] = temp |
|||
if (i == 0) i = j++ |
|||
} |
|||
} |
|||
fun main(args: Array<String>) { |
|||
val array = arrayOf(100, 2, 56, 200, -52, 3, 99, 33, 177, -199) |
|||
println("Original : ${array.asList()}") |
|||
gnomeSort(array) |
|||
println("Sorted (asc) : ${array.asList()}") |
|||
gnomeSort(array, false) |
|||
println("Sorted (desc) : ${array.asList()}") |
|||
}</lang> |
|||
{{out}} |
|||
<pre> |
|||
Original : [100, 2, 56, 200, -52, 3, 99, 33, 177, -199] |
|||
Sorted (asc) : [-199, -52, 2, 3, 33, 56, 99, 100, 177, 200] |
|||
Sorted (desc) : [200, 177, 100, 99, 56, 33, 3, 2, -52, -199] |
|||
</pre> |
|||
=={{header|Lua}}== |
=={{header|Lua}}== |