KMP时间复杂度分析

比较过程分析

这里写图片描述

比较次数

比较次数: 红色 + 蓝色
蓝色部分是相比暴力求解,节省下的比较次数

周期

从比较次数可以看出,呈现 1 1 1 1 5 这样的周期

  • 一个周期内的比较次数:8
  • 周期长度:5
  • 周期个数:n/5
  • 比较总次数: 周期个数 * 一个周期内额比较次数 = 1.8n

一般化结论:
- 一个周期内的比较次数:1 * (M - 1) + M
- 周期长度:M
- 周期个数:N/M
- 比较总次数: 周期个数 * 一个周期内额比较次数 = (2 - 1/M)*N < 2N

因此是线性

接下来证明,上述情况是KMP算法的最差情况

最差情况

  1. 模式串
    当模式串长度为M,首字符和其他字符全都相等(假定都为a),模式串
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值