資料結構與演算法 查詢技巧知識總結筆記

2021-10-05 21:18:10 字數 1577 閱讀 6618

首先,我們先來了解一下關於資料查詢方法的三大查詢方法,分別是:靜態、動態、雜湊。

靜態查詢:無論是靜態查詢還是動態查詢,都要有查詢的物件,也就是包含很多同型別資料的「表」,這個「表」可以理解為乙個由同型別資料元素組成的乙個「集合」,該集合可以用各種容器來儲存,例如陣列、鍊錶、樹等,我們統稱這些儲存資料的資料結構為——查詢表。可見,查詢表有時是我們傳統意義的表,有時候是很複雜的一種結構。

靜態查詢就是我們平時概念中的查詢,是「真正的查詢」。之所以說靜態查詢是真正的查詢,因為在靜態查詢過程中僅僅是執行「查詢」的操作,即:(1)檢視某特定的關鍵字是否在表中(判斷性查詢);(2)檢索某特定關鍵字資料元素的各種屬性(檢索性查詢)。這兩種操作都只是獲取已經存在的乙個表中的資料資訊,不對錶的資料元素和結構進行任何改變,這就是所謂的靜態查詢。

動態查詢:了解完了靜態查詢的概念後,動態查詢就很好理解了,個人總覺得動態查詢不像是「查詢」,更像是乙個對錶進行「建立、擴充、修改、刪除」的過程。動態查詢的過程中對錶的操作會多兩個動作:(1)首先也有乙個「判斷性查詢」的過程,如果某特定的關鍵字在表中不存在,則按照一定的規則將其插入表中;(2)如果已經存在,則可以對其執行刪除操作。動態查詢的過程雖然只是多了「插入」和「刪除」的操作,但是在對具體的表執行這兩種操作時,往往並不是那麼簡單。哪種查詢對應各自查詢表,如有序表可以為靜態查詢表,也可以為動態查詢表。依查詢方式決定。

無論是靜態查詢還是動態查詢,都要有專查詢的物件,也就是包含很多同型別資料的「表」,這個「表」由同型別資料元素組成,該集合可以用各種容器來儲存,例如陣列、鍊錶、樹等,統稱這些儲存資料的資料結構為——查詢表。動態查詢由於只要求索引表是有序的,對塊內節點沒有排序要求,因此特別適合於節點動態變化的情況。屬當增加或減少節以及節點的關鍵碼改變時,只需將該節點調整到所在的塊即可。在空間複雜性上,動態查詢的主要代價是增加了乙個輔助陣列。

雜湊查詢:它的本質是先將資料對映成它的雜湊值。雜湊查詢的核心是構造乙個雜湊函式,它將原來直觀、整潔的資料對映為看上去似乎是隨機的一些整數。

雜湊查詢的產生有這樣一種背景——有些資料本身是無法排序的(如影象),有些資料是很難比較的(如影象)。如果資料本身是無法排序的,就不能對它們進行比較查詢。如果資料是很難比較的,即使採用折半查詢,要比較的次數也是非常多的。因此,雜湊查詢並不查詢資料本身,而是先將資料對映為乙個整數(它的雜湊值),並將雜湊值相同的資料存放在同乙個位置一即以雜湊值為索引構造乙個陣列。

在雜湊查詢的過程中,只需先將要查詢的資料對映為它的雜湊值,然後查詢具有這個雜湊值的資料,這就大大減少了查詢次數。如果構造雜湊函式的引數經過精心設計,記憶體空間也足以存放雜湊表,查詢乙個資料元素所需的比較次數基本上就接近於一次。

影響雜湊查詢效率的乙個重要因素是雜湊函式本身。當兩個不同的資料元素的雜湊值相同時,就會發生衝突。為減少發生衝突的可能性,雜湊函式應該將資料盡可能分散地對映到雜湊表的每乙個表項中。解決衝突的方法有以下兩種:

(1)開放位址法:如果兩個資料元素的雜湊值相同,則在雜湊表中為後插入的資料元素另外選擇乙個表項。當程式查詢雜湊表時,如果沒有在第乙個對應的雜湊表項中找到符合查詢要求的資料元素,程式就會繼續往後查詢,直到找到乙個符合查詢要求的資料元素,或者遇到乙個空的表項。

(2)鏈位址法:將雜湊值相同的資料元素存放在乙個鍊錶中,在查詢雜湊表的過程中,當查詢到這個鍊錶時,必須採用線性查詢方法。

資料結構與演算法(重要知識總結)

1 資料結構 邏輯結構 資料物件中資料元素之間的相互關係。物理結構 資料的邏輯結構在計算機中的儲存形式。四大邏輯結構 整合結構 線性結構 樹形結構 圖形結構。2 演算法效率 演算法採用的策略 方案 編譯產生的 質量 問題的輸入模組 機器執行命令的速度 1 鍊錶 單鏈表,只有乙個存放指標的模組,存放位...

資料結構與演算法知識總結(二)

下面對常見的資料結構和常用演算法知識進行總結。我們知道資料結構研究物件可以分為邏輯資料結構和儲存 物理 資料結構兩種。但對資料結構進行分類,資料結構可分為很多種,如按照資料的邏輯結構對其進行簡單的分類,可以分為線性結構和非線性結構,而且還可以對這兩種結構進行細分,那就是平時所說的常見的人八大資料結構...

資料結構與演算法 知識總結二

一 堆疊的特點 後進先出。堆疊是一種特殊的線性表。簡稱為棧,是限定只能在表的一端進行插入和刪除操作的線性表。允許插入和刪除的一端為 棧頂 另一端為 棧底 將元素插入棧頂的稱為 入棧 進棧或壓棧 刪除棧頂元素的為 出棧 棧的兩種儲存結構 1 順序棧 採用順序結構儲存 2 鏈棧 採用鏈式結構儲存 堆疊的...