| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 数据结构篇-----BF算法 -> 正文阅读 |
|
[数据结构与算法]数据结构篇-----BF算法 |
最近复习的数据结构发现了许多新的知识点,特来上传到CSDN上总结一下,希望可以帮助到有需要的同学! 串的模式匹配就是在主串中查找与模式相匹配的子串,若匹配成功,确定相匹配的子串中的第一个字符在主串中出现的位置 BF算法即暴力破解法,设置指定主串中查找的起始位置pos,设置计数指针i=pos,j=1;分别指示主串和模式中当前正待比较的字符位置,将主串的第pos个字符和模式中的第一个字符比较,若相等,急需逐个比较后续逐个字符,若不相等,从主串的下一个字符(i=i-j+2)重新与模式串的第一个字符比较,,若主串的连续字符与模式串相等,则匹配成功,否则匹配失败,返回值为0. C语言算法描述: int? Index_BF(SString? S,SString? T,int? pos){ i=pos,j=1; while(i<=S.length &&? j<=T.length){ if(S.ch[i]==T.ch[j]){ ++i;++j; } else{i=i-j+2;j=1;} if(j>T.length){ return i-T.length; } else return 0; } } 在匹配成功的情况下,考虑两种极端情况,即: 1、最好情况下,每趟不成功的匹配发生在与模式串的第一个字符与主串中相应字符的比较,平均时间复杂度为o(n+m) 2、最坏情况下,每趟不成功的匹配发生在与模式串的最后一个字符与主串中相应字符的比较,最坏情况下的平均时间复杂度为o(n×m) OK,关于BF算法的总结就到这了。 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 21:17:25- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |