更新時間:2022-11-25 13:04:37 來源:動力節(jié)點 瀏覽1264次
在二分查找法中,將集合反復(fù)分成兩半,根據(jù)關(guān)鍵字是小于還是大于集合的中間元素,在集合的左半邊或右半邊查找關(guān)鍵元素。
一個簡單的二進制搜索算法如下:
計算集合的中間元素。
將關(guān)鍵項與中間元素進行比較。
如果 key = middle 元素,那么我們返回找到的鍵的中間索引位置。
Else 如果 key > mid 元素,則 key 位于集合的右半部分。因此,在集合的下半部分(右)重復(fù)步驟 1 到 3。
else key < mid element,則key在集合的上半部分。因此,您需要在上半部分重復(fù)二進制搜索。
從上面的步驟可以看出,在二分查找中,第一次比較后,集合中有一半的元素被忽略了。
請注意,相同的步驟序列適用于迭代和遞歸二分查找。
讓我們用一個例子來說明二分查找算法。
例如,采用以下包含 10 個元素的排序數(shù)組。
讓我們計算數(shù)組的中間位置。
中 = 0+9/2 = 4
#1) 鍵 = 21
首先,我們將鍵值與 [mid] 元素進行比較,我們發(fā)現(xiàn) mid = 21 的元素值。
因此我們發(fā)現(xiàn) key = [mid]。因此,密鑰位于數(shù)組中的位置 4。
#2) 鍵 = 25
我們首先將鍵值與mid進行比較。由于 (21 < 25),我們將直接在數(shù)組的上半部分搜索鍵。
現(xiàn)在我們將再次找到數(shù)組上半部分的中間值。
中 = 4+9/2 = 6
位置 [mid] 的值 = 25
現(xiàn)在我們比較 key 元素和 mid 元素。所以 (25 == 25),因此我們在位置 [mid] = 6 找到了密鑰。
因此,我們反復(fù)劃分數(shù)組,通過比較關(guān)鍵元素和中間元素,我們決定在哪一半中搜索關(guān)鍵。二進制搜索在時間和正確性方面更有效率,而且速度也快得多。
初級 202925
初級 203221
初級 202629
初級 203743