原文: https://www.programiz.com/kotlin-programming/examples/lexicographical-order-words

在此程序中,您将学习使用for循环和 Kotlin 中的if循环按字典顺序对元素词进行排序。

示例:按字典顺序对字符串排序的程序

  1. fun main(args: Array<String>) {
  2. val words = arrayOf("Ruby", "C", "Python", "Java")
  3. for (i in 0..2) {
  4. for (j in i + 1..3) {
  5. if (words[i].compareTo(words[j]) > 0) {
  6. // swap words[i] with words[j[
  7. val temp = words[i]
  8. words[i] = words[j]
  9. words[j] = temp
  10. }
  11. }
  12. }
  13. println("In lexicographical order:")
  14. for (i in 0..3) {
  15. println(words[i])
  16. }
  17. }

运行该程序时,输出为:

  1. In lexicographical order:
  2. C
  3. Java
  4. Python
  5. Ruby

在上述程序中,要排序的 5 个单词的列表存储在变量word中。

然后,我们遍历每个单词(words[i]),并将其与数组中之后的所有单词(words[j])进行比较。 这是通过使用字符串的compareTo()方法完成的。

如果compareTo()的返回值大于 0,则必须在位置上进行交换,即word[i]word[j]之后。 因此,在每次迭代中,words[i]包含最早的单词。

执行步骤

迭代 初始单词 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" }
最后 { "C", "Java", "Ruby", "Python" } 2 3 { "C", "Java", "Python", "Ruby" }

以下是等效的 Java 代码:以字典顺序对单词进行排序的 Java 程序