(1)確定該區間的中點位置:mid=(low+high)/2
min代表區間中間的結點的位置,low代表區間最左結點位置,high代表區間最右結點位置
(2)將待查a值與結點mid的關鍵字(下面用r[mid].key)比較,若相等,則查詢成功,否則確定新的查詢區間:
如果r[mid].key>a,則由表的有序性可知,r[mid].key右側的值都大於a,所以等於a的關鍵字如果存在,必然在r[mid].key左邊的表中。這時high=mid-1
如果r[mid].key
如果r[mid].key=a,則查詢成功。
(3)下一次查詢針對新的查詢區間,重複步驟(1)和(2)
(4)在查詢過程中,low逐步增加,high逐步減少,如果low>high,則查詢失敗。
平均查詢長度=log2(n+1)-1,時間複雜度o(logn)
查詢不成功時和給定值的關鍵字比較個數最多不超過logn+1.
注:雖然二分法查詢的效率高,但是要將表按關鍵字排序。而排序本身是一種很費時的運算,所以二分法比較適用於順序儲存結構。為保持表的有序性,在順序結構中插入和刪除都必須移動大量的結點。因此,二分查詢特別適用於那種一經建立就很少改動而又經常需要查詢的線性表。
所以說用折半查詢時序列必須是有序的!
public class binarysearch else if (num < nums[mid]) else
}return -1;
}//二分查詢的實現
public static void main(string args) ;
//對陣列進行排序
quicksort.sort(nums, 0, nums.length-1);
int find = binarysearch.search(nums,5);
if (find != -1) else }}
C 二分法查詢,遞迴二分法
用二分法來求需要查詢的值.includeusing namespace std 查詢key元素是否存在 int findkey const int buf 100 const int ilen,const int key else right left mid 1 查詢失敗 return 1 查詢k...
python二分法查詢 Python 二分法查詢
二分法查詢主要的作用就是查詢元素 lst 1,3,5,7,12,36,68,79 資料集 百萬級資料 num int input 請輸入你要查詢的元素資訊 for el in lst if num el print 存在 break else print 不存在 len lst 0 1 2 3 4 ...
二分法查詢
前幾天csdn上說只有10 程式設計師能寫出正確的二分法查詢 so.我在看過二分法查詢方法後寫了乙個 一次測試成功.範圍 需要次數 10 4 100 7 1000 10 10000 14 100000 17 1000000 20 除了對特別小的陣列外,二分法查詢表現是非常優秀的.每次對範圍加倍可以建...