二分查詢演算法是建立在有序陣列基礎上的
在未接觸到二分查詢演算法時,我們對陣列進行遍歷,每個元素進行比較,即順序查詢。二分查詢較順序查詢更優,因為這種演算法每一次比較都使查詢範圍縮小一半。
演算法思想為:
查詢過程從陣列的中間元素開始,如果中間元素正好是要查詢的元素,則查詢過程結束;
如果某一待查詢元素大於或者小於中間元素,則在陣列大於或小於中間元素的那一半中查詢,而且跟第1點一樣從中間元素開始繼續進行查詢。
如果在某一步驟陣列為空,則代表找不到
優缺點:
優點是比較次數少,查詢速度快,平均效能好
其缺點是要求待查表為有序表,且插入刪除困難
所以,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。
演算法**:
#include
#include
intbinary_search
(int arr,
int k,
int left,
int right)
else
if(arr[mid]
> k)
else
}return-1
;}intmain()
;int k =5;
int left =0;
int right =
sizeof
(arr)
/sizeof
(arr[0]
)-1;
int ret =0;
ret =
binary_search
(arr, k, left, right);if
(-1== ret)
else
system
("pause");
return0;
}
二分查詢 折半查詢 和猜數字小遊戲
一 二分查詢 1 二分查詢的思想 前提 二分查詢的序列一定是按照公升序或降序排列,不然無法使用。定義left指向第乙個元素,right指向最後乙個元素,mid指向中間元素 mid left right left 1 定義size sizeof arr sizeof arr 0 可以求得陣列的整個長度...
二分查詢 折半查詢 演算法
二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。首先,假設表中元素是按公升序排列,將表中間位置記錄的 關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置 記錄將表分成前 後兩個子...
演算法 二分查詢(折半查詢)
二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。使用二分查詢的條件 1.必須採用順序儲存結構。2.必須按關鍵字大小有序排列。通俗一點的說 如果資料是乙個陣列,那麼這個陣列必須是有序的 時間複雜度 o log2n 如圖所示 下面我們來看c語言 include非遞迴實現 v...