常用的幾種查詢演算法

2021-10-09 03:24:28 字數 2150 閱讀 2531

給定乙個 n 個元素有序的(公升序)整型陣列 nums 和乙個目標值 target ,寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 -1。

順序查詢也稱為線形查詢,屬於無序查詢演算法。

從資料結構線形表的一端開始,順序掃瞄,依次將掃瞄到的結點關鍵字與給定值k相比較,

若相等則表示查詢成功;

若掃瞄結束仍沒有找到關鍵字等於k的結點,表示查詢失敗。

class

solution

}return-1;}}

給定乙個 n 個元素有序的(公升序)整型陣列 nums 和乙個目標值 target ,寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 -1。

二分查詢操作的資料集是乙個有序的資料集。

開始時,先找出有序集合中間的那個元素。

如果此元素比要查詢的元素大,就接著在較小的乙個半區進行查詢;

反之,如果此元素比要找的元素小,就在較大的乙個半區進行查詢。

在每個更小的資料集中重複這個查詢過程,直到找到要查詢的元素或者資料集不能再分割。

給定乙個 n 個元素有序的(公升序)整型陣列 nums 和乙個目標值 target ,寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 -1。

基於二分查詢演算法,將查詢點的選擇改進為自適應選擇,可以提高查詢效率。當然,差值查詢也屬於有序查詢。

class

solution

else

if(nums[mid]

else

}return-1;}}

給定乙個 n 個元素有序的(公升序)整型陣列 nums 和乙個目標值 target ,寫乙個函式搜尋 nums 中的 target,如果目標值存在返回下標,否則返回 -1。

斐波那契是是二分查詢的一種提公升演算法,通過運用**比例的概念在數列中選擇查詢點進行查詢,提高查詢效率。同樣地,斐波那契查詢也屬於一種有序查詢演算法。

相對於折半查詢,一般將待比較的key值與第mid=(low+high)/2位置的元素比較,比較結果分三種情況:

1)相等,mid位置的元素即為所求

2)>,low=mid+1;

3)斐波那契查詢與折半查詢很相似,他是根據斐波那契序列的特點對有序表進行分割的。他要求開始表中記錄的個數為某個斐波那契數小1,及n=f(k)-1;

開始將k值與第f(k-1)位置的記錄進行比較(及mid=low+f(k-1)-1),比較結果也分為三種

1)相等,mid位置的元素即為所求

2)>,low=mid+1,k-=2;

說明:low=mid+1說明待查詢的元素在[mid+1,high]範圍內,k-=2 說明範圍[mid+1,high]內的元素個數為n-(f(k-1))= fk-1-f(k-1)=fk-f(k-1)-1=f(k-2)-1個,所以可以遞迴的應用斐波那契查詢。

3)說明:low=mid+1說明待查詢的元素在[low,mid-1]範圍內,k-=1 說明範圍[low,mid-1]內的元素個數為f(k-1)-1個,所以可以遞迴 的應用斐波那契查詢。

class

solution

int left =0;

int right = nums.length -1;

int k =0;

while

(right >= fib[k]-1

)int

temp = arrays.

copyof

(nums,fib[k]);

/*for(int i = 0;iwhile

(left<=right)

else

if(target

)else

}//沒找到

return-1;}}

幾種查詢演算法的比較

1.堆的意義在於最快的找到最大最小值,在堆中插入乙個值,取走最大值或最小值重新構建堆結構,其時間複雜度為o log n 而其它方法至少為 o n 堆在實際中用途不在於排序,堆的應用 a.在於排程演算法中,比如優先順序排程,每次取優先順序最高的.b.可以採用堆構造優先順序佇列,優化dijstra 演算...

幾種合併查詢演算法

問題 實際中需要知道拓撲圖中的2點是否連通,比如電路板 地圖中不同的城市等等,這種問題可以轉化為合併查詢問題,相應的求解可以用合併查詢演算法。基本思想是轉化為長度為n的陣列和已知m對連通對,其值表示了兩個點是否連通。合併查詢演算法 union find 可以有以下幾種 1 快速查詢演算法 mark連...

幾種基本查詢演算法

1.2 折半查詢 1.3 分塊查詢 索引查詢 2 b樹和b 樹 的方法 2.2 b 樹的基本概念 3 雜湊表 4 串5 補充 思想 從線性表的一端開始,與關鍵字逐個比較。若已經比對到表的另一端還沒有匹配成功,則返回查詢失敗資訊 typedef struct sstable intsearch seq...