二分查詢的前提必須是乙個有序的陣列
這裡提供兩個**乙個是查詢乙個值的一個下標,另乙個是查詢乙個值的一組下標
/**
* 二分查詢 注意:前提是該陣列是有序的
* @param arr 查詢的陣列
* @param left 左邊索引
* @param right 右邊索引
* @param value 要查詢的值
* @return 要查詢的下標
*/public
static
intbinarysearch
(int
arr,
int left,
int right,
int value)
//mid中值
int mid =
(left + right)/2
;int midvalue = arr[mid];if
(value > midvalue)
else
if(value < midvalue)
else
}/**
* 二分查詢 注意:前提是該陣列是有序的
* @param arr 查詢的陣列
* @param left 左邊索引
* @param right 右邊索引
* @param value 要查詢的值
* @return 要查詢的下標list
*/public
static arraylist lbinarysearch
(int
arr,
int left,
int right,
int value)
//mid中值
int mid =
(left + right)/2
;int midvalue = arr[mid];if
(value > midvalue)
else
if(value < midvalue)
else
al.add(temp)
; temp -=1;
} al.
add(mid)
; temp = mid +1;
while
(true
) al.
add(temp)
; temp +=1;
}return al;
}}
迭代二分查詢二分查詢
在寫這篇文章之前,已經寫過了幾篇關於改迭代二分查詢主題的文章,想要了解的朋友可以去翻一下之前的文章 bentley在他的著作 writing correct programs 中寫道,90 的計算機專家不能在2小時內寫出完整確正的二分搜尋演算法。難怪有人說,二分查詢道理單簡,甚至小學生都能明確。不過...
《演算法筆記》二分查詢
二分查詢 非遞迴實現 二分查詢的前提是有序,並且每次查詢的範圍都是閉區間 include include include using namespace std int a 10 intmain else if a mid n right mid 1 else if a mid n left mid...
二分查詢 折半查詢 學習
二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。查詢過程 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...