介紹
二分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。
但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列
查詢過程
首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功;
否則利用中間位置記錄將表分成前、後兩個子表,
如果中間位置記錄的關鍵字大於查詢關鍵字,則進一步查詢前一子表,否則進一步查詢後一子表。
重複以上過程,直到找到滿足條件的記錄,使查詢成功,或直到子表不存在為止,此時查詢不成功。
#include
using
namespace std;
intbinarysearch
(int
*a,int start,
int end,
int findval)
//遞迴
intbinarysearch1
(int
*a,int start,
int end,
int findval)
//迴圈
return-1
;}intmain()
;int input =0;
while
(cin >> input)
return0;
}
資料結構查詢演算法(二分查詢)
參考例子 後記 二分查詢演算法,說白了就是在有序的陣列裡面給予乙個存在陣列裡面的值key,然後將其先和陣列中間的比較,如果key大於中間值,進行下一次mid後面的比較,直到找到相等的,就可以得到它的位置。首先確定整個查詢區間的中間位置mid strat end strat 2 用待查關鍵字key值與...
資料結構與演算法 二分查詢
二分查詢的思想是在已經排序 公升序 的陣列中,如果要查詢的數比中位數小,那麼其位置只可能在左半部分,相反只能在右半部分。這樣每次把查詢區間縮小一半,比順序查詢效率快得多。非遞迴寫法 public static int binarysearchinasclooply int nums,int star...
資料結構與演算法,二分查詢
1.時間複雜度 每次能去掉一半即 logn 2.實現方式 while迴圈 與 遞迴 我更推薦 while 迴圈,因為遞迴有個潛在的問題就是 stack over flow 堆疊溢位 而且在實際工程中是盡量避免遞迴的。雖然遞迴寫起來方便,也不容易出錯。3.實現關鍵點 我總結了下,一共有以下四點 sta...