1、沒有預處理階段
2、需要常量額外空間
3、通常需要模式串視窗向右移動乙個位置
4、可以按照任意順序進行比較
5、搜尋的時間複雜度為o(mn)
6、文字字元期望比較次數:2n
暴力搜尋演算法由文字串中從0到n-m所有位置的比較組成,無論是否從模式串的起始位置開始,每次匹配過後,模式串向右移動一位。暴力搜尋演算法沒有預處理階段,文字串和模式串需要常量額外空間,在搜尋階段的文字串的字元可以按照任意順序進行比較,匹配的時間複雜度為o(mn),
int bf(char *x, int m, char *y, intn) }
上面的演算法可以改寫為下面更加高效的演算法:
#define eos '\0'int bf(char *x, int m, char *y, int
n)
第1次嘗試 g
catc
gcag
agag
tata
cagt
acg1
234g
caga
gag 第2次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第3次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第4次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第5次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第6次嘗試 g
catc
gcag
agag
tata
cagt
acg1
2345
678g
caga
gag 第7次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第8次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第9次嘗試 g
catc
gcag
agag
tata
cagt
acg1
2gca
gaga
g 第10次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第11次嘗試 g
catc
gcag
agag
tata
cagt
acg1
2gca
gaga
g 第12次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第13次嘗試 g
catc
gcag
agag
tata
cagt
acg1
2gca
gaga
g 第14次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第15次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第16次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
第17次嘗試 g
catc
gcag
agag
tata
cagt
acg1
gcag
agag
字串匹配 暴力搜尋演算法
主要特徵 1 沒有預處理階段 2 需要常量額外空間 3 通常需要模式串視窗向右移動乙個位置 4 可以按照任意順序進行比較 5 搜尋的時間複雜度為 o mn 6 文字字元期望比較次數 2n演算法描述 暴力搜尋演算法由文字串中從0到 n m所有位置的比較組成,無論是否從模式串的起始位置開始,每次匹配過後...
字串搜尋演算法
參考文獻 google boyer moore 1.前言 字串搜尋是乙個基本的操作,c庫函式中也提供了strstr 函式進行字串搜尋,應該是屬於線性搜尋。此外,為提高搜尋速度,人們又發展 出一些快速搜尋演算法,如boyer moore演算法等,其與線性搜尋的區別是當發現模式不匹配時,不是象線性搜尋那...
字串暴力匹配演算法
暴力匹配演算法 如果用暴力匹配的思路,並假設現在 str1 匹配到 i位置,子串 str2 匹配到 j 位置,則有 1 如果當前字元匹配成功 即 str1 i str2 j 則i j 繼續匹配下乙個字元 2 如果失配 即 str1 i str2 j 令i i j 1 j 0 相當於每次匹配失敗時,i...