專利名稱:一種字符串的排序方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理,尤其涉及一種字符串的排序方法。
背景技術(shù):
在科技不斷發(fā)展的今天,計算機的應(yīng)用領(lǐng)域越來越廣,但是受硬件和存儲空間大小的限制,如何在有限的資源條件下,提高軟件的運行速度是軟件開發(fā)人員一直努力的方向。在眾多方法中,對信息的排序成為程序設(shè)計人員考慮的因素之一,排序方法選擇得當(dāng)與否直接影響程序執(zhí)行的速度和輔助存儲空間的占有量,進而影響整個軟件的性能。排序是程序設(shè)計中的一個重要的操作,排序過程是將一個記錄的任意序列,在一定規(guī)則的約束下,生成一個有序的序列。排序可以分為內(nèi)排序和外排序。內(nèi)部排序是指整個排序過程不需要訪問外存便能完成;外部排序則是整個序列的排序過程不可能在內(nèi)存中完成,通常這種情況下記錄的數(shù)量很大。排序算法主要有插入排序、選擇排序、交換排序、歸并排序和分配排序。這些排序即可應(yīng)用于常規(guī)的數(shù)值排序,也可應(yīng)用于字符串的排序。但是對字符串排序,存在效率不高、無法滿足實際開發(fā)中遇到的情況,所以需要專門處理字符串的字符串排序算法。最常見的字符串排序算法有字典排序。Trie樹又名字典樹,從字面意思即可理解,這種樹的結(jié)構(gòu)像英文字典一樣,相鄰的單詞一般前綴相同,之所以時間復(fù)雜度低,是因為其采用了以空間換取時間的策略。請參閱圖1,為一個針對字符串排序的Trie樹(我們假設(shè)在這里字符串都是小寫字母),每個結(jié)點有26個分支,每個分支代表一個字母,結(jié)點存放的是從root節(jié)點到達此結(jié)點的路經(jīng)上的字符組成的字符串。將每個字符串插入到trie樹中,到達特定的結(jié)尾節(jié)點時,在這個節(jié)點上進行標記,如插入〃pls〃和”vn”,第一個字母為p,沿著P往下,然后第二個字母為1,沿著I往下,第三個為S,沿著s往下,由于字符串最后一個字符為’ \0’,因而結(jié)束,不再往下了,然后在這個節(jié)點上標記pis. count++,即其個數(shù)增加1.同理” vn”。Trie樹典型應(yīng)用是用于統(tǒng)計和排序大量的字符串(但不僅限于字符串),所以經(jīng)常被搜索引擎系統(tǒng)用于文本詞頻統(tǒng)計。它的優(yōu)點是最大限度地減少無謂的字符串比較,查詢效率比哈希表高。但是它的應(yīng)用主要是針對大量的數(shù)據(jù),對于數(shù)據(jù)量比較小的排序,這種排序方法不適合。如在某些系統(tǒng)開發(fā)過程中,需要對一些特殊的字符串進行排序,需要排序的字符串有如下特點1.長度一般都在N (N〈=50)個字符以內(nèi);2.有很大一部分字符串是由數(shù)字字符組成而且長度不一 ;3.需要進行排序的字符串在M(M〈=10000)個以內(nèi);4.對某些系統(tǒng),需要特殊的排序方式。
發(fā)明內(nèi)容
針對現(xiàn)有技術(shù)的特點,本發(fā)明的目的是提供一種字符串的排序方法,解決在某些系統(tǒng)中對數(shù)據(jù)量比較小的字符串進行排序不適合的問題。為了實現(xiàn)上述目的,本發(fā)明的技術(shù)方案為一種字符串的排序方法,包括如下步驟(1)對待排序字符串?dāng)?shù)組按字符串的長度大小進行排序;(2)在已經(jīng)按字符串的長度排好序的字符串?dāng)?shù)組中,對字符串長度相同的字符串?dāng)?shù)組按字符串值的大小進行排序。優(yōu)選地,在步驟(I)中,字符串長度越大,則字符串越大。優(yōu)選地,在步驟(2)中,字符串值越大,則字符串越大。與現(xiàn)有技術(shù)相比,本發(fā)明的字符串排序方法能夠?qū)崿F(xiàn)在數(shù)據(jù)量不大的情況、對字符串的現(xiàn)實或者使用有特點要求的情況下,對字符串進行排序,使用這種排序方法方便簡潔,直觀,更符合用戶的觀點。比如在進行網(wǎng)元直連維護的時候,需要添加用戶賬號來進行維護,表示賬號的字符串就滿足上面這種字符串的特點,需要對它進行排序,讓這些賬號顯示得有規(guī)律,讓用戶看起來更友好。
下面結(jié)合附圖對本發(fā)明作進一步的詳細說明。圖1是現(xiàn)有技術(shù)的Trie樹示意 圖2是本發(fā)明的流程框 圖3是本發(fā)明的按字符串長度排序流程框 圖4是本發(fā)明的按字符串值排序流程框圖。
具體實施例方式請參閱圖2,先對待排序字符串?dāng)?shù)組進行按長度大小排序,再對該排好序的數(shù)組,長度相同的按值大小排序。請參閱圖3,按長度排序,規(guī)則是字符串長度越大,則字符串越大;得到的是按長度排好序的字符串?dāng)?shù)組。例如
待排序字符數(shù)組
權(quán)利要求
1.一種字符串的排序方法,其特征在于,包括如下步驟(1)對待排序字符串?dāng)?shù)組按字符串的長度大小進行排序;(2)在已經(jīng)按字符串的長度排好序的字符串?dāng)?shù)組中,對字符串長度相同的字符串?dāng)?shù)組按字符串值的大小進行排序。
2.根據(jù)權(quán)利要求1所述的字符串的排序方法,其特征在于,在步驟(I)中,字符串長度越大,則字符串越大。
3.根據(jù)權(quán)利要求1所述的字符串的排序方法,其特征在于,在步驟(2)中,字符串值越大,則字符串越大。
全文摘要
本發(fā)明公開了一種字符串的排序方法,包括如下步驟(1)對待排序字符串?dāng)?shù)組按字符串的長度大小進行排序;(2)在已經(jīng)按字符串的長度排好序的字符串?dāng)?shù)組中,對字符串長度相同的字符串?dāng)?shù)組按字符串值的大小進行排序。本發(fā)明能夠?qū)崿F(xiàn)在數(shù)據(jù)量不大的情況、對字符串的現(xiàn)實或者使用有特點要求的情況下,對字符串進行排序,使用這種排序方法方便簡潔,直觀,更符合用戶的觀點。比如在進行網(wǎng)元直連維護的時候,需要添加用戶賬號來進行維護,表示賬號的字符串就滿足上面這種字符串的特點,需要對它進行排序,讓這些賬號顯示得有規(guī)律,讓用戶看起來更友好。
文檔編號G06F17/30GK103020272SQ201210577739
公開日2013年4月3日 申請日期2012年12月27日 優(yōu)先權(quán)日2012年12月27日
發(fā)明者何睿, 藍進華, 李艷平 申請人:廣東佳和通信技術(shù)有限公司