# Bubble Sort Algorithm in Kotlin

In this source code example, we will write a code to implement the Bubble Sort algorithm in Kotlin.

Bubble Sort Algorithm is one of the simplest sorting algorithms. The bubble sort repeatedly compares adjacent values and swaps them, if needed, to perform the sort. The larger values in the set will, therefore, bubble up to the end of the collection.

# Bubble Sort Algorithm in Kotlin

Let's write the Kotlin program to implement the Bubble sort algorithm to sort elements in ascending order as well as in descending order:
``````import java.util.*

fun <E: Comparable<E>> Array<E>.sort() {
val len = size
for (i in 0 until (len - 1)) {
for (j in 0 until (len - i - 1)) {
if (this[j].compareTo(this[j + 1]) > 0) {
val temp = this[j]
this[j] = this[j + 1]
this[j + 1] = temp
}
}
}
}

fun <E: Comparable<E>> Array<E>.descending() {
val len = size
for (i in 0 until (len - 1)) {
for (j in 0 until (len - i - 1)) {
if (this[j].compareTo(this[j + 1]) < 0) {
val temp = this[j]
this[j] = this[j + 1]
this[j + 1] = temp
}
}
}
}

fun main(args: Array<String>) {
val nums = arrayOf(2, 12, 89, 23, 76, 43, 12)
nums.sort()
println(Arrays.toString(nums))
nums.descending()
println(Arrays.toString(nums))
}
``````

Output:

``````[2, 12, 12, 23, 43, 76, 89]
[89, 76, 43, 23, 12, 12, 2]``````
This method sorts the elements in ascending order:
``````fun <E: Comparable<E>> Array<E>.sort() {
val len = size
for (i in 0 until (len - 1)) {
for (j in 0 until (len - i - 1)) {
if (this[j].compareTo(this[j + 1]) > 0) {
val temp = this[j]
this[j] = this[j + 1]
this[j + 1] = temp
}
}
}
}``````
This method sorts the elements in descending order:
``````fun <E: Comparable<E>> Array<E>.descending() {
val len = size
for (i in 0 until (len - 1)) {
for (j in 0 until (len - i - 1)) {
if (this[j].compareTo(this[j + 1]) < 0) {
val temp = this[j]
this[j] = this[j + 1]
this[j + 1] = temp
}
}
}
}``````