二分查詢(非遞迴)

2021-10-24 01:38:51 字數 713 閱讀 1513

二分查詢也稱折半查詢(binary search),它是一種效率較高的查詢方法。但是,折半查詢要求線性表必須採用順序儲存結構,而且表中元素按關鍵字有序排列。

如果待查序列為空,那麼就返回-1,並退出演算法;這表示查詢不到目標元素。

如果待查序列不為空,則將它的中間元素與要查詢的目標元素進行匹配,看它們是否相等。

如果相等,則返回該中間元素的索引,並退出演算法;此時就查詢成功了。

如果不相等,就再比較這兩個元素的大小。

如果該中間元素大於目標元素,那麼就將當前序列的前半部分作為新的待查序列;這是因為後半部分的所有元素都大於目標元素,它們全都被排除了。

如果該中間元素小於目標元素,那麼就將當前序列的後半部分作為新的待查序列;這是因為前半部分的所有元素都小於目標元素,它們全都被排除了。

在新的待查序列上重新開始第1步的工作。

/**

* @author zzd

* @date 2020/8/29 14:19

* @email [email protected]

* * 二分查詢。非遞迴法

*/public

class

binarysearch

//如果要查詢的值小於,去掉右邊的部分繼續查詢 反之亦然。

if(value)else

}//沒找到返回-1

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找到中間的數,如果...

二分查詢 遞迴與非遞迴

最近做了一道題目,在弄清原理之後發現怎麼也過不去,找了幾個小時的bug,結果問題就出現在二分查詢的知識點上,暑假是有接觸過二分的題目,應該是沒有完全理解才會在昨天的那道題上碰釘子,藉此寫一下對二分的理解來鞏固鞏固以前的知識。一談起查詢,最先想到的無非是遍歷整組資料,複雜度為o n 但是對於一組有規律...