**:又叫線性查詢,是一種基本的查詢演算法。查詢過程:從表中第乙個(或最後乙個)記錄開始,逐個進行記錄的關鍵字和給定值比較,
若某個記錄的關鍵字和給定值相等,則查詢成功,如果查詢到表中最後乙個元素,還沒有找到,則查詢不成功。
時間複雜度:順序查詢的時間複雜度為o(n);public
intsearch
(int
array ,
int key)
}return-1
;}
優點:簡單,是對錶中資料元素的儲存沒有要求;
缺點:當n很大時,查詢效率極為低下。
又稱為二分查詢。它的前提是線性表中的記錄是關鍵碼有序,線性表必須採用順序儲存。
查詢過程:在有序表中,取中間記錄作為比較物件,若給定值與中間記錄的關鍵字相等,則查詢成功;若給定值小於關鍵字,則在中間記錄的左邊查詢;
若大於關鍵字,則在中間記錄的右邊查詢。不斷重複,直到查詢成功。
**:
時間複雜度:順序查詢的時間複雜度為o(logn);public
intsearch
(int
array ,
int key)
return-1
;}
優點:效率快;
缺點:需要查詢表有序。
基於二分查詢,將查詢的選擇改進為自適應選擇,可以提高查詢效率。根據要查詢的關鍵字key與查詢表中最大最小記錄的關鍵字比較後的查詢方法,
其核心就在於插值得計算公式:mid = low + (key -a [low])/(a[high] - a[low])(high - low),替換了二分查詢到的:mid=low+1/2(high-low)
時間複雜度:順序查詢的時間複雜度為o(logn);public
intsearch
(int
array,
int key)
return-1
;}
優點:效率快,且優於二分查詢;
缺點:需要查詢表有序且不適合極端不均勻的資料。
二叉排序樹中查關鍵字,在二叉樹不為空的情況下,首先將被查詢的值同樹的節點進行比較,有三種情況:
如果相等,則查詢成功;
如果比較結果為根節點的關鍵值較大,則說明關鍵字可能存在其左子樹中;
如果比較結果為根節點的關鍵值較小,則說明關鍵字可能存在其右子樹中;
**:(運用遞迴的方法)
時間複雜度:o(logn),最壞情況下的複雜度o(n)bitree search (bitree t, keytype key)
else
if(key>data)
else
}
優點:查詢效率很高
缺點:用這個演算法之前要先建立樹;
資料結構 查詢演算法(折半查詢)
當乙個順序表的元素是有序排列的,這時我們才可以使用折半查詢。我們查詢的過程是找到中間位置判斷這個位置上的值是不是目標值,若是則直接找到,若不是,判斷中間位置上的值與目標值的大小關係,若是大於目標值說明我們要查詢的目標值在前半部分,小於則說明是在後半部分,然後我們在要找的部分裡面用上面同樣的方式查詢,...
資料結構48 資料結構之查詢演算法
在日常生活中,幾乎每天都要進行一些查詢的工作,在 簿中查閱某個人的 號碼 在電腦的資料夾中查詢某個具體的檔案等等。本節主要介紹用於查詢操作的資料結構 查詢表。查詢表是由同一型別的資料元素構成的集合。例如 號碼簿和字典都可以看作是一張查詢表。一般對於查詢表有以下幾種操作 在查詢表中只做查詢操作,而不改...
資料結構與演算法 查詢演算法
1.線性查詢,從頭到尾去遍歷,找到符合的則返回 2.二分法查詢 前提 目標陣列有序 package math public class dichotomy int k new dichotomy show arr,8 system.out.println k public int show int ...