一、什麼是二分查找?
打開百度查找一下,它會給你以下一段話:
二分查找也稱折半查找(BinarySearch),它是一種效率較高的查找方法。但是,折半查找要求線性表必須採用順序存儲結構,而且表中元素按關鍵字有序排列。
從這段話,我們可以得到一個非常有價值的消息:
二分查找只適用於有序排列序列
什麼意思呢?就是說你這個算法只能用於從大到小、或者從小到大排列好的有序序列。如果你存放數據的數組是無序的,那你首先還得給它排序一下。
二、二分查找算法的具體思路
首先如果我們有一個數組:
{1,8,10,89,1000,1214}
-
首先我們需要確認這個數組中間元素的數值。
應該是 mid =(最左邊的元素下標+最右邊元素的下標)/ 2
-
這時候我們進行一個比較,如果 findVal > arr[mid] 那麼就說明,你需要的元素在中間元素的右邊,這時候你只需要向右遍歷就可以了。
-
如果 findVal < arr[mid] 那麼就說明,你需要的元素在中間元素的左邊,這時候你只需要向左遍歷就可以了。
-
如果findVal = arr[mid] 那麼就說明,你找到這個元素了。
那麼這時候可能就有人問,什麼時候我們退出遞歸呢?
- 找到你需要的元素就結束遞歸。
- 遞歸完整個數組,還沒有查找到目標元素,就要結束遞歸,當left > right 就需要進行退出。
整個思路流程相比其他算法,還是比較簡單的,那麼接下來我們就用代碼進行演示一下吧。
三、二分查找算法的代碼演示
二分查找的代碼實現如上圖所示~
邏輯相對來說,也不是很難~
大家一起加油呀~