我认为低位优先字符串排序比较重要的思想:
- 构建字母表,将要排序的对象中包含的所有字符组成String ,输入字母表中。字母表的顺序,就是后面排序的顺序。建立字符和索引的关系,方便两向查询。
- 索引计数法中的分类排序,将同一类放在一起,并将类作为对象排序。(首先将count转为索引,方便aux[count[a[i].key()]++]是连续的。
count转为索引,在此之前还要将组号加1,方便后面分组:这样count[1] = 0; count[2]=3;count[3] = 8; count[4] = 14; count[5] = 20;
同一类放在一起,并将类作为对象排序:
count[a[i].key()]++ : 0++; 3++;8++; 14++
- 循环的按d = 0 ~ W排序,从低位到高位排序。
- 适合排序对象:所有排序对象长度相同。
完整代码: