算法-字符串

来源:互联网 发布:架子鼓app软件下载 编辑:程序博客网 时间:2024/06/05 02:42

字符串排序

一、键索引计数法

  1. 时间复杂度:线性时间,排序N个键为0-R-1需要11N+4R+1次。因为不是继续比较的排序。计数排序嘛,分配型的排序方法,以空间换时间。
  2. 适用:小整数键
  3. 步骤:频率统计,频率转化为索引,数据分类,数据回写。
  4. 特点:是其他三种方法的基本操作

二、低位优先字符串排序(LSD Least-Significant-Digit First)

  1. 时间复杂度:基于键索引排序法 对基于R个字符的字母表的N个长度为W的元素,LSD需要访问~7WN+3WR次数组,空间复杂度为O(N+R)
  2. 适用:定长字符串
  3. 特点:是稳定排序的一种

三、高位优先字符串排序

  1. 时间复杂度:亚线性,最坏情况下为线性。
  2. 适用:不定长的随机字符串
  3. 特点:递归算法,和快排类似,采用切分,一定要搭配插排适用,不然空间复杂度爆炸(N+WR)。插排的阈值M应该为基数R的平方根级别。
  4. 最坏情况:数组含有大量重复键或较长的公共前缀(比如域名)

四、三向字符串快速排序

  1. 时间复杂度:N-Nw,w为字符数组中最长字符串的长度。
  2. 适用:含有较长的公共前缀或大量重复主键的情况。专门为了弥补MSD算法缺陷而设计的,结合三向切分快排思想。
  3. 特点:递归算法,三向快排的思想,较为通用(和归并排序的情况差不多,最好最坏情况上下界差距不是特别大)是原地排序的方法,空间复杂度为W+logN

原创粉丝点击