概念
在许多排序应用中,决定顺序的键都是字符串,因此,对字符串的处理十分重要。
一种字符串排序算法是低位优先法(LSD),这种方法会从右到左地检查键中的字符,适用于键的长度都相同的字符串排序应用。
键索引计数法
键索引计数法是 LSD 的基础,有 4 个步骤:
- 频率统计:使用 int[] 数组来计算每个键出现的频率;
- 将频率转换为索引:计算每个键在排序结果中的起始索引位置;
- 数据分类:将所有元素移到一个辅助数组中进行排序;
- 回写:将排好序的数组写回原数组。
图解
假设将学生分为若干组,标号 1、2、3等,希望将学生按组分类
代码实现
1 | public class KeyIndex { |
低位优先的字符串排序算法
假设有一位工程师,记录了给定时间段内某条公路上所有车辆的车牌号,他希望知道总共有多少不同的车辆经过这段高速公路。解决这个问题的一种简单方法就是将所有车牌号排序,然后遍历找出不同车牌号的数量。这可以使用键索引计数法来完成,从右向左以每个位置的字符作为键。
图解
代码实现
1 | public class LSD { |
参考文档
《算法》第四版