字典序排序淺見
阿新 • • 發佈:2018-12-08
簡單理解
設想一本英語字典裡的單詞,何者在前何者在後?
顯然的做法是先按照第一個字母、以 a、b、c……z 的順序排列;如果第一個字母一樣,那麼比較第二個、第三個乃至後面的字母。如果比到最後兩個單詞不一樣長(比如,sigh 和 sight),那麼把短者排在前。
通過這種方法,我們可以給本來不相關的單詞強行規定出一個順序。“單詞”可以看作是“字母”的字串,而把這一點推而廣之就可以認為是給對應位置元素所屬集合分別相同的各個有序多元組規定順序。
百度百科上的形式定義,又是偏序集又是多個集合乘積,我有意整明白,奈何數學太差了看不懂。暫時放棄深究,只知道到底什麼是字典序排序就行了,具體內部實現暫時不考慮了,改天深入研究實現一下。
import java.util.*;
public class Main {
public static void main(String[] args) {
String[] compare = { "au", "ab", "abc", "hypu", "hapuz" };
//sort方法自己實現了字串的按字典序排列
Arrays.sort(compare);
for (int i = 0; i < compare.length; i++) {
System.out.println(compare[i]);
}
}
}
通俗語言:
大概就是從第一個字母開始比較,按照ascll碼錶比較大小,小的放在前面,第一個相同就比較下一個,都相同且一個比較完了,則短的排在前面。
權重:ascll碼序 > 串長度