資料結構中的各種查詢 總結篇

2021-05-23 16:06:10 字數 1495 閱讀 5169

一、

基本概念:

1、 

列表:待搜尋的資料集合。

2、 

關鍵字:要查詢的那個資料。

3、 

查詢:一種演算法過程。

二、 基於線性表的查詢:

1、 

順序查詢:

(1)思想:逐個比較,直到找到或者查詢失敗。

(2)時間複雜度:t(n) = o(n)。

(3)空間複雜度:s(n) = o(n)。

(4)程式:

2、 

折半查詢:

(1)思想:又稱二分查詢,對於已經按照一定順序排列好的列表,每次都用關鍵字和中間的元素對比,然後判斷是在前部分還是後部分還是就是中間的元素,然後繼續用關鍵字和中間的元素對比。

(2)時間複雜度:

(3)空間複雜度:

(4)程式:

3、 

分塊查詢:

(1)思想:把無序的列表分成若干子塊(子表),然後建立乙個索引表,記錄每個子塊中的某個關鍵字(最大的數或是最小的數),然後用關鍵字和這個索引表進行對比。該索引表還儲存子塊的起始位置,所以可以使用折半查詢或者順序查詢確定關鍵字所在的子塊位置。進入子塊後,使用順序查詢查詢。

(2)時間複雜度:

(3)空間複雜度:

(4)程式:(略)

三、 基於樹的查詢:

1、 

二叉排序樹:

(1)思想:二叉排序樹:①若它的左子樹非空,則左子樹上所有節點的值均小於它的根節點的值;②若它的右子樹非空,則右子樹上所有結點的值均大於(或大於等於)它的根節點的值;③它的左、右子樹也分別為二叉排序樹。查詢的時候,中序遍歷二叉樹,得到乙個遞增有序序列。查詢思路類似於折半查詢。

(2)時間複雜度:插入乙個節點演算法的o(㏒n),插入n個的總複雜度為o(n㏒n)。

(3)空間複雜度:

(4)程式:

2、 

平衡二叉排序樹:

(1)思想:首先它也是二叉排序樹,但是還要具有如下性質:①左子樹和右子樹的深度之差的絕對值小於等於1;②左子樹和右子樹也是平衡二叉樹。

(2)時間複雜度:

(3)空間複雜度:

(4)程式:

3、 

b_樹:

(1)思想:

(2)時間複雜度:

(3)空間複雜度:

(4)程式:

四、 計算式查詢:

1、 

雜湊查詢:

(1)思想:首先在元素的關鍵字k和元素的儲存位置p之間建立乙個對應關係h,使得p=h(k),h稱為雜湊函式。建立雜湊表時,把關鍵字為k的元素直接存入位址為h(k)的單元;以後當查詢關鍵字為k的元素時,再利用雜湊函式計算出該元素的儲存位置p=h(k),從而達到按關鍵字直接訪問元素的目的。難點在於處理衝突的方式:①開放定址法②再雜湊法③鏈位址法④建立公共溢位區。

(2)時間複雜度:

(3)空間複雜度:

(4)程式:

對於b_tree查詢的方法,我沒有深入研究,對此有興趣或者有研究的同志們,可以給我指點指點,不盡感激。

資料結構中的各種排序 總結篇

乙個月沒有寫文章,原因是一直在忙碌著,但是其實是有收穫的,下面就是我這前半個月最大的收穫 對於資料結構中排序演算法的總結,在我找工作的道路上幫助了我好多。如有錯誤,歡迎指正!一 基本概念 1 排序 按照一定的關鍵字,將乙個序列排列成想要得到的乙個新的序列。2 內部排序和外部排序 整個排序過程完全在記...

資料結構中的各種排序總結

1 簡單排序法一般只用於 n較小的情況 例如 n 30 當序列的記錄 基本有序 時,直接插入排序是最佳的排序方法。如果記錄中的資料較多,則應採用移動次數較少的簡單選擇排序法。2 快速排序 堆排序和歸併排序的平均時間複雜度均為 o n n 但實驗結果表明,就平均時間效能而言,快速排序是所有排序方法中最...

資料結構 查詢篇

從第乙個 或最後乙個 記錄開始,逐個進行記錄的關鍵字與給定值進行一一比較。最基礎 void sq search int a,int n,int key return0 缺陷 每對乙個記錄需要進行兩次判斷 i n,a i key 總共需進行2n次,效率不高 優化 設定哨兵。把key賦值給a 0 來做為...