String SortsSummary 字符串排序总结
Page content
[TOC]
整理字符串排序的知识点。
字符排序 String Sorts
Key-indexed counting 键索引计数法
LSD 低位优先字符串排序法
least-significant-digit first (LSD) string sort
比较适用于固定宽度的字符串排序,从右向左,对于每个位置上的字符调用key-indexed counting算法
时间复杂度O(NW),忽略WR,线性级别
伪代码如下:
public static void sort(String[] a, int W)
{
int N = a.length;
int R = 256;
String[] aux = new String[N];
for(int d=W-1; d>=0; d--)
{
int[] count = new int[R+1];
for (int i=0; i<N; i++) {
count[a[i].charAt(d)+1]++;
}
for (int r=0; r<R; r++) {
count[r+1]+=count[r];
}
for (int i=0; i<N; i++) {
aux[count[a[i].charAt(d)]++] = a[i];
}
for (int i=0; i<N; i++) {
a[i] = aux[i];
}
}
}