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}}==