二分查詢演算法的前置條件是,乙個已經排序好的序列(在本篇文章中為了說明問題的方便,假設這個序列是公升序排列的),這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止.
int binsearch(seqlist * r, int n , keytype k ) while(low<=high) if(r[mid].key>k) high=mid-1; //繼續在r[low..mid-1]中查詢 else low=mid+1; //繼續在r[mid+1..high]中查詢 } return -1; //當low>high時表示查詢區間為空,查詢失敗 } //binseareh
int binsearch2(int array, int n, int v) else } if (right >= n || array[right] != v) return right; }
參考資料
1.《程式設計珠璣》
2.wiki上關於二分查詢的說明:
int binsearch1(int r[ ], int n, int k) //陣列r[1] ~ r[n]存放查詢集合 return 0; }
二分查詢法
二分查詢要求 1.必須採用順序儲存結構 2.必須按關鍵字大小有序排列。優缺點 折半查詢法的優點是比較次數少,查詢速度快,平均效能好 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。演算法思想 首先,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者...
二分查詢法
有序陣列中的find 方法 public int find long serchkey int lowerbound 0 int upperbound nelems 1 while true curin lowerbound upperbound 2 if a curin serchkey retu...
二分查詢法
演算法基本思想 二分查詢演算法的前置條件是,乙個已經排序好的序列 假設這個序列是公升序排列的 這樣在查詢所要查詢的元素時,首先與序列中間的元素進行比較,如果大於這個元素,就在當前序列的後半部分繼續查詢,如果小於這個元素,就在當前序列的前半部分繼續查詢,直到找到相同的元素,或者所查詢的序列範圍為空為止...