示例:按字典顺序对字符串排序的程序
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]);
}
}
}
输出
In lexicographical order:
C
Java
Python
Ruby
在上述程序中,要排序的5个单词的列表存储在变量word中。
然后,我们遍历每个单词(words [i]),并将其与数组中之后的所有单词(words [j])进行比较。这是通过使用字符串的compareTo()方法完成的。
如果compareTo()的返回值大于0,则必须在位置上交换它,即,单词[i]在单词[j]之后。因此,在每次迭代中,单词[i]包含最早的单词。
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" } |