2012/12/20

使用 N 維陣列實作 Lexicographical Order 排序

98 關務 三等
有 N 份資料,每份資料皆以兩個大寫英文字母標記(例如 AK、TA 等等)。請設計 一 O(N) 時間的演算法,將此組資料依標記的字典順序排序,並請說明此演算法所 需使用的空間。

本題有兩個變相,故宣告一二維陣列 (26x26)

A B .... Z
B
...
Z

讀取資料檔案,遇到對應的資料時,陣列內容值 + 1
最後再依序從陣列第一列開始讀到最後一列輸出遇到大於 0 的位置,即是排序後的結果。

製作陣列可以說是常數的時間複雜度,因為 26 * 26 是算的出來的,只取決於讀進的資料檔大小。

No comments:

Post a Comment