1 个不稳定版本
0.1.0 | 2020年4月22日 |
---|
#12 in #后缀数组
每月 24 次下载
110KB
3K SLoC
pSACAK
在多核机器上对内存大数据实现 pSACAK 后缀排序算法,如本论文所述。
lib.rs
:
多核机器上内存大数据的 pSACAK 后缀排序算法。
该算法在本论文中进行了描述。
示例
创建新的后缀数组。
use psacak::psacak;
let text = b"mississippi";
let suf = psacak(text);
assert_eq!(suf, vec![10, 7, 4, 1, 0, 9, 8, 6, 3, 5, 2]);
在切片中计算后缀数组。
use psacak::psacak_inplace;
let text = b"mississippi";
let mut suf = vec![0; text.len()];
psacak_inplace(text, &mut suf[..]);
assert_eq!(suf, vec![10, 7, 4, 1, 0, 9, 8, 6, 3, 5, 2]);
请注意,pSACAK 计算的后缀数组中未显示哨兵的位置。
要获取包含哨兵位置的后缀数组,您可以尝试这样做
use psacak::psacak_inplace;
let text = b"mississippi";
let mut suf = vec![0; text.len() + 1];
suf[0] = text.len() as u32;
psacak_inplace(text, &mut suf[1..]);
assert_eq!(suf, vec![11, 10, 7, 4, 1, 0, 9, 8, 6, 3, 5, 2]);
依赖项
~1.5MB
~28K SLoC