zoukankan      html  css  js  c++  java
  • P3809 【模板】后缀排序 良心讲解

    感谢yyr学长的讲课以及自为风月马前卒大佬的这篇博客

    一直早有耳闻后缀数组SA的大名,今天yyr学长也讲解了有关于后缀数组的内容,后缀排序又是能够求出后缀数组的操作,感觉其中的原理理解起来还是很简单的,不过就是按第一关键字和第二关键字排序罢了。但是代码的细节却不太好理解。

    后缀排序时要用上好几个数组,我先在这里讲解用到的数组有哪些:

    而在对字符排序的时候,因为常用的sort时间复杂度太高(nlogn),所以这样的情况下我们就会选择更优的基数排序(O(n))。关于基数排序,在此有一个简单的介绍:

     

    百度上的解释还是比较详细的,其实用通俗的话来说就是按多个关键字来排序,这很好的满足了我们后缀排序的需求。

     首先我们对每一位的单个字符进行基数排序

    按自为风月马前卒大佬的话来说,因为单个字符的ASCII值是可以确定的,所以可以看做一个(fir[i],i)的二元组,所以我们先将这个二元组进行排序。

    可以利用前缀和的思想求出每一个出现过的值域的排名。因为值域是单调的,字符集值域的上界可以定为127(我也不知道为什么这样定)。

  • 相关阅读:
    列表 元组
    前端 3
    前端 2
    python pymysql 表和数据的备份
    python 树 索引
    python 数据库连表查询习题
    python 数据库表查询
    python 数据库usdr 查询
    python set enum 完整性约束
    python 数据库表操作
  • 原文地址:https://www.cnblogs.com/LJB666/p/11191059.html
Copyright © 2011-2022 走看看