查詢演算法
一、查詢的基本概念
查詢,也可稱檢索,是在大量的資料元素中找到某個特定的資料元素而進行的工作。查詢是一種操作。
二、順序查詢
針對無序序列的一種最簡單的查詢方式。
時間複雜度為o(n)。
三、折半查詢
針對已排序序列的一種查詢方式。並且只適用於順序儲存結構的序列。要求序列中的元素基本不變,在需要做刪除和插入操作的時候,會影響檢索效率。
時間複雜度為o(logn)。
四、b樹
b樹又稱二叉排序樹(binary sort tree)。
1、概念:
它或者是一棵空樹;或者是具有下列性質的二叉樹:
(1)若左子樹不空,則左子樹上所有結點的值均小於左子樹所在樹的根結點的值;
(2)若右子樹不空,則右子樹上所有結點的值均大於右子樹所在樹的根結點的值;
(3)左、右子樹也分別為二叉排序樹;
2、b樹的查詢:
時間複雜度與樹的深度的有關。
步驟:若根結點的關鍵字值等於查詢的關鍵字,成功。
否則:若小於根結點的關鍵字值,遞迴查左子樹。
若大於根結點的關鍵字值,遞迴查右子樹。
若子樹為空,查詢不成功。
3、b樹的插入:
首先執行查詢演算法,找出被插結點的父親結點。
判斷被插結點是其父親結點的左兒子還是右兒子。將被插結點作為葉子結點插入。
若二叉樹為空。則首先單獨生成根結點。
注意:新插入的結點總是葉子結點,所以演算法複雜度是o(h)。
4、b樹的刪除:
如果刪除的結點沒有孩子,則刪除後演算法結束;
如果刪除的結點只有乙個孩子,則刪除後該孩子取代被刪除結點的位置;
如果刪除的結點有兩個孩子,則選擇該結點的後繼結點(該結點右孩子為根的樹中的左子樹中的值最小的點)作為新的根,同時在該後繼結點開始,執行前兩種刪除演算法,刪除演算法結束。
5、b+樹
一棵m階的b+樹滿足下列條件:
(1)每個結點最多m個孩子。
(2)除根結點和葉子結點外,其它每個結點至少有ém/2ù個孩子。
(3)根結點至少有兩個孩子。
(4)所有的葉子結點在同一層,且包含了所有關鍵字資訊。
(5)有k個孩子的分支結點包含k個關鍵字。
例如:
五、雜湊(hash)表
關鍵字:雜湊函式、裝填因子、衝突、同義詞;
add = hash(key);
解決衝突方法:
開放定址法 – 探測方式:線性探測、二次探測。
分離鏈結法 – 利用鍊錶的方式。
查詢找效率不依賴於資料長度n,查詢效率非常快,很多能達到o(1),查詢的效率是a(裝填因子)的函式,而不是n的函式。因此不管n多大都可以找到乙個合適的裝填因子以便將平均查詢長度限定在乙個範圍內。
下面為查詢演算法的測試編碼,僅供交流:
vc++ 6.0 環境
資料結構之查詢演算法總結筆記
查詢演算法 一 查詢的基本概念 查詢,也可稱檢索,是在大量的資料元素中找到某個特定的資料元素而進行的工作。查詢是一種操作。二 順序查詢 針對無序序列的一種最簡單的查詢方式。時間複雜度為o n 三 折半查詢 針對已排序序列的一種查詢方式。並且只適用於順序儲存結構的序列。要求序列中的元素基本不變,在需要...
資料結構之查詢演算法總結
基礎知識 二分查詢演算法 有序表 順序儲存 複雜度o logn 一般用於強調有序陣列查詢時。雜湊表 o 1 時間根據關鍵字,得到所需的值。二叉搜尋樹 排序樹 根節點左邊值小於根結點,右邊值大於根結點。int binary search int data,int length,int key retu...
資料結構之查詢演算法
在日常生活中,幾乎每天都要進行一些查詢的工作,在 簿中查閱某個人的 號碼 在電腦的資料夾中查詢某個具體的檔案等等。本節主要介紹用於查詢操作的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。例如 號碼簿和字典都可以看作是一張查詢表。一般對於查詢表有以下幾種操作 在查詢表中只做查詢操作,而不改...