????對(duì)于許多排序應(yīng)用脱吱,決定順序的鍵都是字符串帚呼。這里將分享兩類完全不同的字符串排序方法,三種不同的字符串排序算法阐斜。
? ? 第一類是低位優(yōu)先(LSD)的字符串排序衫冻,這個(gè)算法是從右到左檢查鍵中的字符,要求字符串大小相同且必須走完全部字符谒出,才能完成排序隅俘。
第二類是高位優(yōu)先(MSD)的字符串排序渡紫,和低位相反,高位是從左到右檢查鍵中的字符考赛,不要求字符串大小相同惕澎,也不一定要走完所有字符才完成排序。
? ? 在學(xué)習(xí)這兩種排序算法之前颜骤,應(yīng)該先了解一下鍵索引計(jì)數(shù)法唧喉,這種方法本身就很實(shí)用,同時(shí)也是本節(jié)將要學(xué)習(xí)的兩三中字符串排序算法的基礎(chǔ)忍抽。鍵索引計(jì)數(shù)法在排序歸類比較實(shí)用八孝,比如將學(xué)生按小組排序,下面是鍵索引計(jì)數(shù)法的步驟:
? ? 1 頻率統(tǒng)計(jì)鸠项,計(jì)數(shù)每個(gè)鍵出現(xiàn)的頻率
? ? 2, 將頻率轉(zhuǎn)化為索引
? ? 3干跛,將數(shù)據(jù)分類
? ? 4,回寫
按照步驟祟绊,給出下面的代碼:
輸出:
? ? 接下來(lái)楼入,學(xué)習(xí)低位優(yōu)先(LSD)字符串排序算法,下面是代碼:
輸出:
排序軌跡:
高位優(yōu)先(MSD)字符串排序算法:
先來(lái)看高位優(yōu)先的字符串排序的示意圖:
根據(jù)示意圖和算法思想牧抽,給出如下代碼:
輸出:
排序軌跡:
三向字符串快速排序
三向字符串快速排序根據(jù)高位優(yōu)先的字符串排序算法改進(jìn)快速排序嘉熊,根據(jù)鍵的首字母進(jìn)行三向切分,僅在中間子數(shù)組中的下一個(gè)子繼續(xù)遞歸排序扬舒,示意圖如下:
代碼如下所示:
輸出:
排序軌跡: