最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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:小灰的算法進階》第四章 查找算法的評論 (共 條)

分享到微博請遵守國家法律
陕西省| 嘉义市| 甘泉县| 临西县| 和林格尔县| 西宁市| 湖口县| 阿合奇县| 枣庄市| 锡林浩特市| 洛隆县| 邯郸市| 扶沟县| 珠海市| 调兵山市| 荆门市| 肇州县| 平阳县| 洞头县| 栖霞市| 剑河县| 亚东县| 香河县| 建始县| 农安县| 称多县| 镇康县| 秦安县| 屯昌县| 漳州市| 阿坝| 潍坊市| 黔西| 万安县| 清水河县| 高邑县| 西乌珠穆沁旗| 台南县| 景东| 皮山县| 赣榆县|