字串和多維陣列

2021-10-01 05:16:37 字數 2007 閱讀 8584

一、字串

1、串:零個或多個字元組成的有限序列。

串長度:串中所包含的字元個數。

空串:長度為0的串,記為「 」。

非空串表示:s=」s1,s2…sn"(s為串名,「」為定界符,其中為串值,si為任意字元。

2、串的邏輯結構

順序串:用陣列來儲存串中的字串行。

表示串的長度:

用乙個變數來表示串的實際長度。

在串尾儲存乙個不會在串**現的特殊字元作為串的終結符,表示串的結尾。

非壓縮形式

壓縮形式

3、模式匹配

①給定主串s="s1s2…sn"和模式t=「t1t2…tm」,在s中尋找t的過程。——如果匹配成功,返回t在s中的位置,如果匹配失敗,返回-1。假設串採用順序儲存結構,串值從0號單元開始存放。

②應用:生物資訊學(基因表達分析,基因配對)、資訊檢索、拼寫檢查、語言翻譯、資料壓縮、網路入侵檢測

③bf(brute-force)演算法:

從主串s的第0個字元開始和模式t的第0個字元進行比較,若相等,則繼續比較兩者的後續字元;否則從主串s的第1個字元開始和模式t的第0個字元進行比較,重複,直到t中的字元全部比較完畢,則說明本趟匹配成功;或s中字元全部比較完,則說明匹配失敗。

⭐模式匹配過程要進行多趟的匹配,每趟匹配要進行若干次的比較

int bf(char s,char t)

設串s長度為n,串t長度為m,在匹配成功的情況下,考慮:

最好:不成功的匹配都發生在串t的第乙個字元。例如:s=「aaaaaaaaaabcdccccc」,t=「bcd」

最壞:不成功的匹配都發生在串t的最後乙個字元。例如:s=「aaaaaaaaaabccccc」,t=「aaab」

④kmp(knuth-morris-pratt)演算法

i可以不回溯,模式向右滑動到的新比較起點k,並且k僅與模式串t有關。

next【j】表徵著模式t中最大相同字首子串和左子串(真子串)的長度。

void compute_next(char t,int next)

}用偽**描述:

在串s和串t中分別設比較的起始下標i和j;

2.迴圈直到s中所剩字元長度小於t的長度或t中所有字元均比較完畢

①如果s[i]==t[j],繼續比較s和t的下乙個字元;否則

②將j向右滑動到next【j】位置,即j=next【j】;

③如果j=1,則將i和j分別加1,準備下一趟比較;

3.如果t中所有字元均比較完畢,則返回匹配的起始下標;否則返回-1。

4 多維陣列

4.2.1 陣列的定義

陣列是由型別相同的是資料元素構成的有序集合。

特點:資料元素本身可以具有某種結構,但屬於同一資料型別。

陣列是乙個具有固定格式和數量的資料集合,在陣列上一般不能執行插入或刪除某個陣列元素的操作。

(1)讀操作:給定一組下標,讀取相應的陣列元素。

(2)寫操作:給定一組下標,儲存或修改相應的陣列元素。

其本質對應一種操作——定址:根據一組下標定位相應的陣列元素。

4.2.2 陣列的儲存結構與定址

二維陣列的每個元素含有兩個下標,需要將二維關係對映為一維關係。對映方法:

(1)以行序為主序

(2)以列序為主序

按行優先儲存的基本思想:先行後列,先儲存行號較小的元素,行號相同者先儲存列號較小的元素。

按列優先儲存的基本思想:先列後行,先儲存列號較小的元素,列號相同者先儲存行號較小的元素。

4.3 矩陣的壓縮儲存

一些階數很高的矩陣同時在矩陣中有很多零元素——稱為稀疏矩陣。

壓縮儲存的基本思想:1)為多個值相同的元素只分配乙個儲存空間;2)對零元素不分配儲存空間。

4.3.1 對稱矩陣的壓縮儲存

對稱矩陣關於主對角線對稱,so只需要儲存下三角部分,在nn個儲存單元裡只需要n(n+1)/2個儲存單元,

方法:將所有元素存入陣列sa,其下標與i、j的關係:k=i*(i-1)/2+j-1

而上三角中的元素aij=aji,k=j*(j-1)/2+i-1

字串和多維陣列

一 字串 1 字串的定義 是零個或多個字串組成的有限序列,只包含空格的串稱為空格串。2 字串中任意個連續的字元組成的子串行稱為該穿的子串,包含子串的串稱為主串,子串的第乙個字元咋主串中的序號稱為子串在主串中的位置。3 模式匹配 給定兩個字串s和t,在主串s中尋找子串t的過程稱為模式匹配,t為模式。如...

字串和多維陣列

1.串 零個或多個字元組成的有限序列 串 零個或多個字元組成的有限序列。串長度 串中所包含的字元個數。空串 長度為 0的串,記為 非空串通常記為 s s1 s2 sn 其中 s 是串名,雙引號是定界符,雙引號引起來的部分是串值,si 1 i n 是乙個任意字元。1.1串的邏輯結構 子串 串中任意個連...

字串和多維陣列

intbf char s,char t else if t j 0 return start 1 else return0 int kmp char s,char p else if j plen return i j else return 1 陣列是乙個具有固定格式和數量的資料集合,在其上一般不...