需要注意的是,只有有序的數列才可以使用此演算法。
非遞迴的方式,易於理解,且效率不錯,節省開闢棧空間的開銷了。
例:現有陣列,要求實現二分查詢(非遞迴)
// 二分查詢的非遞迴實現
/** * @param arr 待查詢的陣列,arr是公升序排序
* @param target 需要查詢的數
* @return 返回對應下標,-1表示沒有找到
*/public
static
intbinarysearch
(int
arr,
int target)
else
if(arr[mid]
> target)
else
}return-1;}}
二分查詢(遞迴 非遞迴)
二分查詢是一種查詢效率非常高的查詢演算法。又稱折半查詢。起初在資料結構中學習遞迴時實現二分查詢,實際上不用遞迴也可以實現,畢竟遞迴是需要開闢額外的空間的來輔助查詢。本文就介紹兩種方法 其缺點是要求待查表為有序表,且插入刪除困難。因此,折半查詢方法適用於不經常變動而查詢頻繁的有序列表。使用條件 查詢序...
二分查詢(非遞迴)
二分查詢只適用於從有序的數列中進行查詢 執行時間為對數時間o log 2 n log 2 log2 n 即最多隻需要log 2 n log 2 log2 n 步。0,99 中100個數進行查詢,需要26 100 27步,最多需要7步 思路 確定出歸條件,找到了或者start end找到中間的數,如果...
二分查詢(非遞迴)
二分查詢也稱折半查詢 binary search 它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。如果待查序列為空,那麼就返回 1,並退出演算法 這表示查詢不到目標元素。如果待查序列不為空,則將它的中間元素與要查詢的目標元素進行匹配,看它們是否...