Example: Program to Sort Strings in Dictionary Order
public class Sort {
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]);
}
}
}
Output
In lexicographical order: C Java Python Ruby
In the above program, the list of 5 words to sorted is 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 the 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.
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" } |