更新時(shí)間:2022-11-25 13:04:37 來(lái)源:動(dòng)力節(jié)點(diǎn) 瀏覽1205次
在二分查找法中,將集合反復(fù)分成兩半,根據(jù)關(guān)鍵字是小于還是大于集合的中間元素,在集合的左半邊或右半邊查找關(guān)鍵元素。
一個(gè)簡(jiǎn)單的二進(jìn)制搜索算法如下:
計(jì)算集合的中間元素。
將關(guān)鍵項(xiàng)與中間元素進(jìn)行比較。
如果 key = middle 元素,那么我們返回找到的鍵的中間索引位置。
Else 如果 key > mid 元素,則 key 位于集合的右半部分。因此,在集合的下半部分(右)重復(fù)步驟 1 到 3。
else key < mid element,則key在集合的上半部分。因此,您需要在上半部分重復(fù)二進(jìn)制搜索。
從上面的步驟可以看出,在二分查找中,第一次比較后,集合中有一半的元素被忽略了。
請(qǐng)注意,相同的步驟序列適用于迭代和遞歸二分查找。
讓我們用一個(gè)例子來(lái)說(shuō)明二分查找算法。
例如,采用以下包含 10 個(gè)元素的排序數(shù)組。
讓我們計(jì)算數(shù)組的中間位置。
中 = 0+9/2 = 4
#1) 鍵 = 21
首先,我們將鍵值與 [mid] 元素進(jìn)行比較,我們發(fā)現(xiàn) mid = 21 的元素值。
因此我們發(fā)現(xiàn) key = [mid]。因此,密鑰位于數(shù)組中的位置 4。
#2) 鍵 = 25
我們首先將鍵值與mid進(jìn)行比較。由于 (21 < 25),我們將直接在數(shù)組的上半部分搜索鍵。
現(xiàn)在我們將再次找到數(shù)組上半部分的中間值。
中 = 4+9/2 = 6
位置 [mid] 的值 = 25
現(xiàn)在我們比較 key 元素和 mid 元素。所以 (25 == 25),因此我們?cè)谖恢?[mid] = 6 找到了密鑰。
因此,我們反復(fù)劃分?jǐn)?shù)組,通過(guò)比較關(guān)鍵元素和中間元素,我們決定在哪一半中搜索關(guān)鍵。二進(jìn)制搜索在時(shí)間和正確性方面更有效率,而且速度也快得多。
相關(guān)閱讀
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問(wèn)老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743