資料結構查詢演算法

2021-10-01 23:43:43 字數 1492 閱讀 5844

又叫線性查詢,是一種基本的查詢演算法。查詢過程:從表中第乙個(或最後乙個)記錄開始,逐個進行記錄的關鍵字和給定值比較,

若某個記錄的關鍵字和給定值相等,則查詢成功,如果查詢到表中最後乙個元素,還沒有找到,則查詢不成功。

**:

public

intsearch

(int

array ,

int key)

}return-1

;}

時間複雜度:順序查詢的時間複雜度為o(n);

優點:簡單,是對錶中資料元素的儲存沒有要求;

缺點:當n很大時,查詢效率極為低下。

又稱為二分查詢。它的前提是線性表中的記錄是關鍵碼有序,線性表必須採用順序儲存。

查詢過程:在有序表中,取中間記錄作為比較物件,若給定值與中間記錄的關鍵字相等,則查詢成功;若給定值小於關鍵字,則在中間記錄的左邊查詢;

若大於關鍵字,則在中間記錄的右邊查詢。不斷重複,直到查詢成功。

**:

public

intsearch

(int

array ,

int key)

return-1

;}

時間複雜度:順序查詢的時間複雜度為o(logn);

優點:效率快;

缺點:需要查詢表有序。

基於二分查詢,將查詢的選擇改進為自適應選擇,可以提高查詢效率。根據要查詢的關鍵字key與查詢表中最大最小記錄的關鍵字比較後的查詢方法,

其核心就在於插值得計算公式:mid = low + (key -a [low])/(a[high] - a[low])(high - low),替換了二分查詢到的:mid=low+1/2(high-low)

public

intsearch

(int

array,

int key)

return-1

;}

時間複雜度:順序查詢的時間複雜度為o(logn);

優點:效率快,且優於二分查詢;

缺點:需要查詢表有序且不適合極端不均勻的資料。

二叉排序樹中查關鍵字,在二叉樹不為空的情況下,首先將被查詢的值同樹的節點進行比較,有三種情況:

如果相等,則查詢成功;

如果比較結果為根節點的關鍵值較大,則說明關鍵字可能存在其左子樹中;

如果比較結果為根節點的關鍵值較小,則說明關鍵字可能存在其右子樹中;

**:(運用遞迴的方法)

bitree    search (bitree  t, keytype  key)

else

if(key>data)

else

}

時間複雜度:o(logn),最壞情況下的複雜度o(n)

優點:查詢效率很高

缺點:用這個演算法之前要先建立樹;

資料結構 查詢演算法(折半查詢)

當乙個順序表的元素是有序排列的,這時我們才可以使用折半查詢。我們查詢的過程是找到中間位置判斷這個位置上的值是不是目標值,若是則直接找到,若不是,判斷中間位置上的值與目標值的大小關係,若是大於目標值說明我們要查詢的目標值在前半部分,小於則說明是在後半部分,然後我們在要找的部分裡面用上面同樣的方式查詢,...

資料結構48 資料結構之查詢演算法

在日常生活中,幾乎每天都要進行一些查詢的工作,在 簿中查閱某個人的 號碼 在電腦的資料夾中查詢某個具體的檔案等等。本節主要介紹用於查詢操作的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。例如 號碼簿和字典都可以看作是一張查詢表。一般對於查詢表有以下幾種操作 在查詢表中只做查詢操作,而不改...

資料結構與演算法 查詢演算法

1.線性查詢,從頭到尾去遍歷,找到符合的則返回 2.二分法查詢 前提 目標陣列有序 package math public class dichotomy int k new dichotomy show arr,8 system.out.println k public int show int ...