码迷,mamicode.com
首页 > 其他好文 > 详细

学渣乱搞系列之后缀数组

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

标签:style   io   strong   ar   代码   log   时间   size   sp   

学渣乱搞系列之后缀数组

            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

 

 

学渣乱搞系列之后缀数组

标签:style   io   strong   ar   代码   log   时间   size   sp   

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!