W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
「搜索算法 searching algorithm」用于在數(shù)據(jù)結(jié)構(gòu)(例如數(shù)組、鏈表、樹或圖)中搜索一個或一組滿足特定條件的元素。
搜索算法可根據(jù)實現(xiàn)思路分為以下兩類。
不難發(fā)現(xiàn),這些知識點都已在前面的章節(jié)中介紹過,因此搜索算法對于我們來說并不陌生。在本節(jié)中,我們將從更加系統(tǒng)的視角切入,重新審視搜索算法。
暴力搜索通過遍歷數(shù)據(jù)結(jié)構(gòu)的每個元素來定位目標(biāo)元素。
暴力搜索的優(yōu)點是簡單且通用性好,無須對數(shù)據(jù)做預(yù)處理和借助額外的數(shù)據(jù)結(jié)構(gòu)。
然而,此類算法的時間復(fù)雜度為 O(n) ,其中 n 為元素數(shù)量,因此在數(shù)據(jù)量較大的情況下性能較差。
自適應(yīng)搜索利用數(shù)據(jù)的特有屬性(例如有序性)來優(yōu)化搜索過程,從而更高效地定位目標(biāo)元素。
此類算法的優(yōu)點是效率高,時間復(fù)雜度可達(dá)到 O(log?n) 甚至 O(1) 。
然而,使用這些算法往往需要對數(shù)據(jù)進(jìn)行預(yù)處理。例如,二分查找需要預(yù)先對數(shù)組進(jìn)行排序,哈希查找和樹查找都需要借助額外的數(shù)據(jù)結(jié)構(gòu),維護(hù)這些數(shù)據(jù)結(jié)構(gòu)也需要額外的時間和空間開支。
Note
自適應(yīng)搜索算法常被稱為查找算法,主要關(guān)注在特定數(shù)據(jù)結(jié)構(gòu)中快速檢索目標(biāo)元素。
給定大小為 n 的一組數(shù)據(jù),我們可以使用線性搜索、二分查找、樹查找、哈希查找等多種方法在該數(shù)據(jù)中搜索目標(biāo)元素。各個方法的工作原理如圖 10-11 所示。
圖 10-11 多種搜索策略
上述幾種方法的操作效率與特性如表 10-1 所示。
表 10-1 查找算法效率對比
搜索算法的選擇還取決于數(shù)據(jù)體量、搜索性能要求、數(shù)據(jù)查詢與更新頻率等。
線性搜索
二分查找
哈希查找
樹查找
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: