Kotlin Program to Sort Elements in Lexicographical Order (Dictionary Order)

Example: Program to Sort Strings in Dictionary Order

fun main(args: Array<String>) {

    val words = arrayOf("Ruby", "C", "Python", "Java")

    for (i in 0..2) {
        for (j in i + 1..3) {
            if (words[i].compareTo(words[j]) > 0) {

                // swap words[i] with words[j[
                val temp = words[i]
                words[i] = words[j]
                words[j] = temp
            }
        }
    }

    println("In lexicographical order:")
    for (i in 0..3) {
        println(words[i])
    }
}

When you run the program, the output will be:

In lexicographical order:
C
Java
Python
Ruby

In the above program, the list of 5 words to sorted are stored in a variable, words.

Then, we loop through each word (words[i]) and compare it with all words (words[j]) after it in the array. This is done by using string's compareTo() method.

If the return value of compareTo() is greater than 0, it has to be swapped in position, i.e. words[i] comes after words[j]. So, in each iteration, words[i] contains the earliest word.

Execution Steps
Iteration Initial words i j words[]
1 { "Ruby", "C", "Python", "Java" } 0 1 { "C", "Ruby", "Python", "Java" }
2 { "C", "Ruby", "Python", "Java" } 0 2 { "C", "Ruby", "Python", "Java" }
3 { "C", "Ruby", "Python", "Java" } 0 3 { "C", "Ruby", "Python", "Java" }
4 { "C", "Ruby", "Python", "Java" } 1 2 { "C", "Python", "Ruby", "Java" }
5 { "C", "Python", "Ruby", "Java" } 1 3 { "C", "Java", "Ruby", "Python" }
Final { "C", "Java", "Ruby", "Python" } 2 3 { "C", "Java", "Python", "Ruby" }

Here's the equivalent Java code: Java program to sort words in lexicographical order

Did you find this article helpful?