注:一定是有序的陣列,才可以使用這種演算法,如果陣列沒有排序則先進行排序後再呼叫此方法。
1、二分法是做什麼的呢?
當然是查詢陣列中的資料了,開個玩笑,哈哈哈。
2、為啥要用這種方式呢?
二分顧名思義,就是將一組資料對半分開(比如左右兩部分,下面用左右陣列表示),從中間位置開始查詢,
如果中間這個值正是咱們要找的值則直接返回這個值(或者索引),如果沒有找到,那麼去判斷中間的這個值和咱們要找的值哪個大,
如果中間值比咱們要找的值大,則將之前分開的陣列的左面的陣列再進行對半分開,遞迴直到找到咱們要的那個值才會結束,反之亦然,
但是如果就是沒有咱們找的值那麼豈不是死迴圈了嘛,
所以要加判斷,如果遞迴到開始索引大於結束索引,也就是查到最後了還是沒有找到匹配的值,則退出。
這種搜尋演算法每一次比較都使搜尋範圍縮小一半,這樣對於大資料量的陣列,極大的提公升了查詢效率。
protected
void
button1_click1
(object sender,
eventargs e)
;//測試 要找的數字是15
int key =15;
//查詢數並返回 若有,返回該數,沒有則返回-1
int rr =
binarysearch
(arry,
0, arry.length -
1, key)
; response.
write
(rr);}
///
/// 二分法查詢指定值
///
/// 目標陣列
/// 開始索引
/// 結束索引
/// 要查詢的關鍵字
///
public
static
intbinarysearch
(int
arr,
int start,
int end,
int key)
else
}}
二分法終極解讀
目錄 二分法是啥 1.最基本的二分法模組 尋找乙個數 最基本的二分法框架 左閉右開 左閉右閉 2.尋找第乙個大於目標值的位置 3.尋找第乙個大於等於目標值的位置 左邊界 4.其他採用二分法的題目 最近研究二分法,感覺對裡面的各種邊界及左右指標的指向產生了深深的懷疑,有時候要加等號,有時候要左閉右開區...
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 ...