算法
文章平均质量分 79
Anvilliu
这个作者很懒,什么都没留下…
展开
-
快速排序实现以及优化
快速排序是目前使用最广的排序算法,Java的默认排序方法就是快速排序,其特点为原地排序(不需要辅助数组,节省了空间);而且具有较为优秀的排序时间复杂度NlogNNlogNNlogN。快排的思路快速排序是一种分治思想的递归排序算法,它每次排序都把整个数组划分为两个子数组,然后递归的对数组进行排序,最终使递归下面的全部子数组排序,从而让整个数组有序。常规思路:以数组第一个元素为切分元素。采用双指针,从数组的左边开始寻找大于等于切分元素的值,从数组的右边开始寻找小于等于切分元素的值,并且保证左指原创 2021-03-12 08:47:17 · 294 阅读 · 0 评论 -
KMP算法——next数组
KMP算法是一种动态规划算法,其主要用于字符串匹配。KMP算法之所以难理解,就是其最核心的内容PMT数组难以理解。下面的value就是PMT数组,为什么PMT数组是这样的呢?首先要说明的是一个字符串的前缀后缀的问题前缀:如果字符串A和B,存在A=BS,其中S是任意的非空字符串,那就称B为A的前缀。例如,”Harry”的前缀包括{”H”, ”Ha”, ”Har”, ”Harr”}后缀:如果字符串A和B,存在A=SB, 其中S是任意的非空字符串,那就称B为A的后缀。例如,”Potter”的后缀包原创 2021-03-12 08:45:34 · 2116 阅读 · 0 评论