新聞中心
二分查找(Binary Search)是一種在有序數(shù)組中查找特定元素的搜索算法,它的工作原理是每次比較數(shù)組中間元素與目標(biāo)值,如果中間元素正好等于目標(biāo)值,則查找成功;如果目標(biāo)值小于中間元素,則在數(shù)組的左半部分繼續(xù)查找;如果目標(biāo)值大于中間元素,則在數(shù)組的右半部分繼續(xù)查找,通過(guò)不斷縮小查找范圍,直到找到目標(biāo)值或者查找范圍為空。

創(chuàng)新互聯(lián)公司專注于龍州網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠(chéng)為您提供龍州營(yíng)銷型網(wǎng)站建設(shè),龍州網(wǎng)站制作、龍州網(wǎng)頁(yè)設(shè)計(jì)、龍州網(wǎng)站官網(wǎng)定制、成都微信小程序服務(wù),打造龍州網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供龍州網(wǎng)站排名全網(wǎng)營(yíng)銷落地服務(wù)。
下面是一個(gè)Python實(shí)現(xiàn)的二分查找函數(shù):
def binary_search(arr, target):
left, right = 0, len(arr) 1
while left <= right:
mid = (left + right) // 2
if arr[mid] == target:
return mid
elif arr[mid] < target:
left = mid + 1
else:
right = mid 1
return 1
這個(gè)函數(shù)接受兩個(gè)參數(shù):一個(gè)有序數(shù)組arr和一個(gè)目標(biāo)值target,函數(shù)返回目標(biāo)值在數(shù)組中的索引,如果目標(biāo)值不存在于數(shù)組中,則返回1。
現(xiàn)在我們來(lái)詳細(xì)解釋一下這個(gè)函數(shù)的實(shí)現(xiàn)過(guò)程:
1、初始化兩個(gè)指針left和right,分別指向數(shù)組的第一個(gè)元素和最后一個(gè)元素。
2、使用while循環(huán),當(dāng)left小于等于right時(shí),執(zhí)行循環(huán)體,這是因?yàn)槿绻?code>left大于right,說(shuō)明查找范圍已經(jīng)為空,目標(biāo)值不存在于數(shù)組中。
3、計(jì)算中間元素的索引mid,這里使用整數(shù)除法//,以避免出現(xiàn)小數(shù)。
4、比較中間元素arr[mid]與目標(biāo)值target:
如果arr[mid]等于target,說(shuō)明找到了目標(biāo)值,返回其索引mid。
如果arr[mid]小于target,說(shuō)明目標(biāo)值位于數(shù)組的右半部分,將left更新為mid + 1。
如果arr[mid]大于target,說(shuō)明目標(biāo)值位于數(shù)組的左半部分,將right更新為mid 1。
5、如果循環(huán)結(jié)束后仍未找到目標(biāo)值,說(shuō)明目標(biāo)值不存在于數(shù)組中,返回1。
需要注意的是,二分查找算法要求輸入的數(shù)組是有序的,在使用二分查找之前,請(qǐng)確保數(shù)組已經(jīng)按照升序或降序排列。
網(wǎng)頁(yè)題目:python二分法查找
瀏覽地址:http://fisionsoft.com.cn/article/cogeegh.html


咨詢
建站咨詢
