Selection Sort Algorithm in Kotlin
import java.util.*
fun <E: Comparable<E>> Array<E>.sort() {
val len = size
// Find the minimum value of the array
for (i in 0 until (len - 1)) {
// Getting the index where minimum value is present
var minIndex = i
for (j in (i + 1) until len) {
if (this[j].compareTo(this[minIndex]) < 0) minIndex = j
}
// We got the minimum element, now swap that to first element
val temp = this[minIndex]
this[minIndex] = this[i]
this[i] = temp
}
}
fun <E: Comparable<E>> List<E>.sort(): List<E> {
val len = size
val resultList = toMutableList()
// Find the minimum value of the array
for (i in 0 until (len - 1)) {
// Getting the index where minimum value is present
var minIndex = i
for (j in (i + 1) until len) {
if (resultList[j].compareTo(resultList[minIndex]) < 0) minIndex = j
}
// We got the minimum element, now swap that to first element
val temp = resultList[minIndex]
resultList[minIndex] = resultList[i]
resultList[i] = temp
}
return resultList
}
fun main(args: Array<String>) {
println("Sort array of elements")
val nums = arrayOf(2, 12, 89, 23, 76, 43, 12)
println("Before sorting array of elements")
println(Arrays.toString(nums))
nums.sort()
println("After sorting array of elements")
println(Arrays.toString(nums))
println()
println("Sort List of elements")
val nums1 = listOf(2, 12, 89, 23, 76, 43, 12)
println("Before sorting list of elements")
println(nums1)
val result = nums1.sort()
println("After sorting list of elements")
println(result)
}
Output:
Sort array of elements
Before sorting array of elements
[2, 12, 89, 23, 76, 43, 12]
After sorting array of elements
[2, 12, 12, 23, 43, 76, 89]
Sort List of elements
Before sorting list of elements
[2, 12, 89, 23, 76, 43, 12]
After sorting list of elements
[2, 12, 12, 23, 43, 76, 89]
