首页 > 其他 > 详细

学渣乱搞系列之后缀数组

时间:2014-08-23 12:30:30      阅读:222      评论:0      收藏:0      [点我收藏+]

学渣乱搞系列之后缀数组

            by 狂徒归来

  后缀数组,其nlogn的构造方法,比较麻烦,十几个循环,基数排序?计数排序?各种排序,各种凌乱,学渣表示鸭梨很大啊!学渣从《挑战程序设计竞赛》中偷学了一点nlog2n的构造方法。

字符串后缀(Suffix)是指从字符串的某个位置开始到其末尾的字符串子串。我们认为原串和空串也是后缀。

后缀数组(Suffix Array)指的是将某个字符的所有后缀按字典序排序后得到的数组。排序方式很多,时间复杂度也不同。有基数排序的倍增法o(nlogn),有DC3构造方法o(n),还有MF构造法等方法。今天我就学学最简洁但是时间复杂度稍高的构造方法,快排+倍增。o(nlog2n)的复杂度。代码量很少。

"abracadabra"对应的后缀数组
i sa[i] S[sa[i]...]
0 11 (空字符串)
1 10 a
2 7 abra
3 0 abracadabra
4 3 acadabra
5 5 adabra
6 8 bra
7 1 bracadabra
8 4 cadabra
9 6 dabra
10 9 ra
11 2 racadabra

 

 

学渣乱搞系列之后缀数组

原文:http://www.cnblogs.com/crackpotisback/p/3930828.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!