日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

【数据结构与算法】动画:什么是 BF 算法 ?

發(fā)布時(shí)間:2024/9/15 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 【数据结构与算法】动画:什么是 BF 算法 ? 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.



本文是圖解?什么是 BF算法KMP算法BM算法 三部曲之一。

定義

Brute-Force算法,簡稱為 BF算法,是一種簡單樸素的模式匹配算法,常用于在一個(gè)主串 S 內(nèi)查找一個(gè)子串 T 的出現(xiàn)位置。

它的核心思想與操作是:

動畫演示

圖片演示

代碼描述

int?index(?String?S,?String?T,?int?pos?){????int?i?=?pos;????????????????????????//?i?表示主串?S?中當(dāng)前位置下標(biāo)????int?j?=?1;????????????????????????????//?j?表示子串?T?中當(dāng)前位置下標(biāo)????while(?i?<=?S[0]?&&?j?<=?T[0]?){????//?i?或?j?其中一個(gè)到達(dá)尾部則終止搜索????????if(?S[i]?==?T[i]?){?????????????//?若相等則繼續(xù)進(jìn)行下一個(gè)元素匹配????????????i++;????????????j++;????????}else?{?????????????????????????//?若匹配失敗則?j?回溯到第一個(gè)元素重新匹配????????????i?=?i?-?j?+?2;??????????????//?將?i?重新回溯到上次匹配首位的下一個(gè)元素????????????j?=?1;????????}????}????if(?j?>?T[0]?){????????return?i?-?T[0];????}else?{????????return?0;????}}
????int?i?=?pos;????????????????????????//?i?表示主串?S?中當(dāng)前位置下標(biāo)
????int?j?=?1;????????????????????????????//?j?表示子串?T?中當(dāng)前位置下標(biāo)

????while(?i?<=?S[0]?&&?j?<=?T[0]?){????//?i?或?j?其中一個(gè)到達(dá)尾部則終止搜索
????????if(?S[i]?==?T[i]?){?????????????//?若相等則繼續(xù)進(jìn)行下一個(gè)元素匹配
????????????i++;
????????????j++;
????????}else?{?????????????????????????//?若匹配失敗則?j?回溯到第一個(gè)元素重新匹配
????????????i?=?i?-?j?+?2;??????????????//?將?i?重新回溯到上次匹配首位的下一個(gè)元素
????????????j?=?1;
????????}
????}

????if(?j?>?T[0]?){
????????return?i?-?T[0];
????}else?{
????????return?0;
????}
}

總結(jié)

BF算法 在主串和字串匹配失敗時(shí),主串進(jìn)行的回溯操作會影響效率,回溯之后,主串與字串有些部分比較是沒有必要的。這種簡單的丟棄前面的匹配信息是 BF算法 之所以效率低效的一個(gè)重要因素。

KMP算法BM算法 將在后續(xù)分別進(jìn)行詳細(xì)介紹,敬請關(guān)注。

總結(jié)

以上是生活随笔為你收集整理的【数据结构与算法】动画:什么是 BF 算法 ?的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。