學習筆記 二分查詢

2021-10-05 22:43:42 字數 1360 閱讀 6308

二分查詢的前提必須是乙個有序的陣列

這裡提供兩個**乙個是查詢乙個值的一下標,另乙個是查詢乙個值的一下標

/**

* 二分查詢 注意:前提是該陣列是有序的

* @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 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。查詢過程 首先,假設表中元素是按公升序排列,將表中間位置記錄的關鍵字與查詢關鍵字比較,如果兩者相等,則查詢成功 否則利用中間位置記錄將表分成前 後...