Сортировка строк в лексикографическом порядке на Java — Arrays.sort

Эта программа сортирует массив строк в словарном порядке.

Пример: сортировка строк в словарном порядке

class Main {
  public static void main(String[] args) {

    String[] words = { "Ruby", "C", "Python", "Java" };

    for(int i = 0; i < 3; ++i) {
      for (int j = i + 1; j < 4; ++j) {

        if (words[i].compareTo(words[j]) > 0) {

          // swap words[i] with words[j]
          String temp = words[i];
          words[i] = words[j];
          words[j] = temp;
        }
      }
    }

    System.out.println("In lexicographical order:");

    for(int i = 0; i < 4; i++) {
      System.out.println(words[i]);
    }
  }
}

Вывод:

In lexicographical order:
C
Java
Python
Ruby

В примере выше мы создали массив строк words. Массив содержит 4 элемента.

Здесь мы используем:

  • циклы for для доступа и сравнения каждого элемента массива;

  • метод compareTo() для выполнения сравнения.

Поскольку мы сортируем элементы в лексикографическом (словарном) порядке, мы меняем местами элементы, если первый элемент идёт после второго в словарном порядке.

Так выглядит сравнение и обмен элементов на каждой итерации:

Исходный words

i

j

Сравнение

words[]

{ "Ruby", "C", "Python", "Java" }

0

1

Ruby и C

{ "C", "Ruby", "Python", "Java" }

{ "C", "Ruby", "Python", "Java" }

0

2

C и Python

{ "C", "Ruby", "Python", "Java" }

{ "C", "Ruby", "Python", "Java" }

0

3

C и Java

{ "C", "Ruby", "Python", "Java" }

{ "C", "Ruby", "Python", "Java" }

1

2

Ruby и Python

{ "C", "Python", "Ruby", "Java" }

{ "C", "Python", "Ruby", "Java" }

1

3

Python и Java

{ "C", "Java", "Ruby", "Python" }

{ "C", "Java", "Ruby", "Python" }

2

3

Ruby и Python

{ "C", "Java", "Python", "Ruby" }