字串匹配 暴力搜尋演算法

2021-09-06 18:34:08 字數 2388 閱讀 8893

1、沒有預處理階段

2、需要常量額外空間

3、通常需要模式串視窗向右移動乙個位置

4、可以按照任意順序進行比較

5、搜尋的時間複雜度為o(mn)

6、文字字元期望比較次數:2n

暴力搜尋演算法由文字串中從0到n-m所有位置的比較組成,無論是否從模式串的起始位置開始,每次匹配過後,模式串向右移動一位。暴力搜尋演算法沒有預處理階段,文字串和模式串需要常量額外空間,在搜尋階段的文字串的字元可以按照任意順序進行比較,匹配的時間複雜度為o(mn),

int bf(char *x, int m, char *y, int

n) }

上面的演算法可以改寫為下面更加高效的演算法:

#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...