基数排序是否用于后缀排序?

时间:2011-06-15 03:26:28

标签: algorithm radix-sort suffix-array burrows-wheeler-transform

我正在尝试实现块排序。这是来自Burrows Wheeler paper

(在此步骤之前,您创建一个S后缀的数组)

Q4。 [基数排序]
使用每个后缀的前两个字符对V的元素进行排序 排序键。这可以使用基数排序有效地完成。

所以我知道你正在用基数排序对后缀进行排序 这应该如何更新阵列V?只有在完成基数排序后,我才能知道后缀的排序位置。假设第4个后缀最终是排序后的第一个。所以V [0] = i。在这种情况下,我们知道(因为我告诉过你)i = 4.但算法如何知道,因为我们没有跟踪他们的位置。我应该创建一个包含后缀及其后缀编号的类吗?

1 个答案:

答案 0 :(得分:2)

快速阅读后;我认为Burrows-Wheeler有一个错误,并且意味着要使用数组V对W的元素进行排序以跟踪和映射W元素的最终位置。这样W就不变了,V包含一个排序的索引列表。

从那一点开始,该论文似乎将V视为指向W中元素的指针数组。

查看http://michael.dipperstein.com/bwt/页面底部有一个很好的描述以及算法的源代码。