五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

《漫畫算法2:小灰的算法進階》第四章 查找算法

2023-03-24 16:43 作者:方程星  | 我要投稿

什么是二分查找

二分查找算法,也稱折半查找算法,是一種在有序數(shù)組中查找某一特定元素的搜索算法。它的搜索原理是將數(shù)組分成兩個部分,取中間值與目標值進行比較,如果中間值等于目標值,則搜索成功;如果中間值大于目標值,則在左半部分繼續(xù)搜索;如果中間值小于目標值,則在右半部分繼續(xù)搜索。重復執(zhí)行以上步驟,直到找到目標值或者搜索區(qū)間為空為止。

查找的時間復雜度是O(logn)

什么是跳表

跳表是一種隨機化的數(shù)據(jù)結構,可以被看做二叉樹的一個變種,它在性能上和紅黑樹,AVL樹不相上下,但是跳表的原理非常簡單,實質就是一種可以進行二分查找的有序鏈表。跳表的平均查找和插入時間復雜度都是O(logn)。跳表的查找是通過維護一個多層次的鏈表,且每一層鏈表中的元素是前一層鏈表元素的子集。一開始時,算法只在最上層鏈表進行查找,如果要查找的元素在當前鏈表中,則直接返回該元素;否則轉到下一層鏈表繼續(xù)查找,直到找到該元素或查找到最底層鏈表為止。跳表的插入和刪除操作需要動態(tài)地調整鏈表結構,以保證跳表的性質不被破壞。

跳表是一種可以進行二分查找的有序鏈表,它的查找、插入、刪除的時間復雜度都是O(logn),是一種高效的數(shù)據(jù)結構。

什么是字符串匹配算法

BF算法(Brute Force);

相比BF算法,RK算法采用了哈希值比較的方式,總的時間復雜度是O(m+n);

RK算法的缺點在于哈希沖突,性能并不穩(wěn)定。每一次出現(xiàn)哈希沖突的時候,RK算法都要對子串和模式串進行逐個字符的比較,如果沖突太多,RK算法就退化成了BF算法

什么是KMP算法


KMP算法全過程

KMP算法的整體時間復雜度是O(m+n),其中n是模式串的長度,m是主串長度;

算法的空間復雜度就是O(n)

小結

在有序數(shù)組中查找元素,可以使用二分查找算法,查找時間復雜度是O(logn);

在有序鏈表中查找元素,可以把鏈表改造成跳表,查找時間復雜度是O(logn);

BF算法是樸素的字符串匹配算法,效率較低,時間復雜度是O(m×n);

RK算法利用hash進行字符串匹配,效率較高但不穩(wěn)定,平均時間復雜度是O(m+n);

KMP算法減少了字符串匹配過程中的無謂比較,效率較高且穩(wěn)定,時間復雜度是O(m+n)


《漫畫算法2:小灰的算法進階》第四章 查找算法的評論 (共 條)

分享到微博請遵守國家法律
吕梁市| 即墨市| 抚顺市| 大埔区| 潼关县| 玉林市| 腾冲县| 敦煌市| 香格里拉县| 红桥区| 平遥县| 襄汾县| 永吉县| 通州区| 新乐市| 北京市| 望谟县| 恩施市| 赣州市| 长海县| 枣阳市| 龙游县| 财经| 仁布县| 临颍县| 武平县| 呼伦贝尔市| 海兴县| 忻城县| 砀山县| 荃湾区| 翁牛特旗| 凤翔县| 霍山县| 共和县| 武乡县| 原平市| 琼海市| 五台县| 栾城县| 延庆县|