二分查詢(迴圈和遞迴實現)

2021-10-04 06:50:09 字數 700 閱讀 1341

二分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。

它充分利用了元素間的次序關係,採用分治策略,可在最壞的情況下用o(log n)完成搜尋任務。

下面給出二分查詢的兩種實現**:

#includeint findvalue(int *ar,int n,int val)//迴圈二分查詢

else if(val > ar[mid])

else

}return pos;

}int find(int *ar,int left,int right,int val)//遞迴二分查詢

if(val > ar[mid])

else

}}int main()

; int n = sizeof(ar)/sizeof(ar[0]);

printf("您查詢(迴圈)數的下標為:%d\n",findvalue(ar,n,23));

printf("您查詢(遞迴)數的下標為:%d\n",find(ar,0,n-1,34));

return 0;

}

執行結果:

迴圈和遞迴實現二分查詢

對於乙個有序序列,定義頭尾,取中間值和目標值比較。如果大了就重新以中間值的前乙個作為尾繼續查詢,小了就以中間值的後乙個作為頭繼續查詢。每次淘汰一半,效率較高。package com.yc.algorithm.recursion 二分查詢 author yc public class binaryse...

二分查詢 Python實現(迴圈 遞迴)

維基百科 在電腦科學中,二分搜尋 英語 binary search 也稱折半搜尋 英語 half interval search 對數搜尋 英語 logarithmic search 是一種在有序陣列中查詢某一特定元素的搜尋演算法。搜尋過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則搜尋...

二分查詢實現(遞迴和非遞迴)

遞迴的二分查詢,查詢單個值 時間複雜度 log2n 有點像二叉排序樹的查詢 param arr 待查詢陣列,有序 param low param high param findval 待找值 return 待找值的下標,沒有返回 1 public static intbinarysearch int...