Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 

README.md

各种字符串排序算法的性能特点

算法 是否稳定 原地排序 运行时间 额外空间 优势领域
字符串的插入排序 N到N*N之间 1 小数组或是已经有序的数组
快速排序 NlgN lgN 通用排序算法,特别适合于空间不足情况
归并排序 NlgN N 稳定的通用排序算法
三向快速排序 N到NlgN之间 lgN 大量重复键
低位优先的字符串排序 NW N 较短的定长字符串
高位优先的字符串排序 N到NW之间 N+WR 随机字符串
三向字符串快速排序 N到NW之间 W+lgN 通用排序算法,特别适合用于含有较长公共前缀的字符串

各种字符串查找算法的性能特点

算法 未命中查找检查的字符数量 内存使用 优点
二叉查找树(BST) c(lgN)**2 64N 适用于随机排列的键
2-3树查找(红黑树) c(lgN)**2 64N 有性能保证
线性探测法(并行数组) w 32N-128N 内置类型,缓存散列值
字典树查找(R向单词查找树) lgN (8R+56)N-(8R+56)Nw 适用于较短的键和较小的字母表
字典树查找(三向单词查找树) 1.39lgN 64N-64Nw 适用于非随机的键

各种字符串查找算法的实现的成本总结

算法 版本 最坏情况 一般情况 在文本中回退 正确性 额外的空间需求
暴力算法 - MN 1.1N 1
KMP 完整的DFA 2N 1.1N MR
KMP 仅构造不匹配的状态转换 3N 1.1N M
KMP 完整版本 3N N/M R
Boyer-Moore算法 启发式的查找不匹配的字符 MN N/M R
Rabin-Karp算法 蒙特卡洛 7N 7N 1
Rabin-Karp算法 拉斯维加斯 7N 7N 1