二分查找,也稱折半查找,是一種在有序數(shù)組中查找目標(biāo)值的算法。
文章來(lái)源地址http://www.zghlxwxcb.cn/article/241.html
它的基本思想是將數(shù)組分成兩個(gè)部分,判斷目標(biāo)值在哪一部分中,然后遞歸地在該部分中進(jìn)行查找,直到找到目標(biāo)值或者確定目標(biāo)值不存在為止。下面是使用 JavaScript 實(shí)現(xiàn)二分查找的代碼:
文章來(lái)源:http://www.zghlxwxcb.cn/article/241.html
function binarySearch(arr, target) { let low = 0; let high = arr.length - 1; while (low <= high) { let mid = Math.floor((low + high) / 2); if (arr[mid] === target) { return mid; } else if (arr[mid] < target) { low = mid + 1; } else { high = mid - 1; } } return -1; }
這個(gè)函數(shù)接受一個(gè)有序數(shù)組和一個(gè)目標(biāo)值作為參數(shù),返回目標(biāo)值在數(shù)組中的下標(biāo)。如果目標(biāo)值不存在于數(shù)組中,則返回 -1。
下面是這個(gè)函數(shù)的使用示例:
const arr = [1, 3, 5, 7, 9]; console.log(binarySearch(arr, 3)); // 輸出 1 console.log(binarySearch(arr, 6)); // 輸出 -1
這個(gè)示例中,我們定義了一個(gè)有序數(shù)組 [1, 3, 5, 7, 9],然后使用 binarySearch 函數(shù)查找其中的值 3 和 6。由于 3 存在于數(shù)組中,因此函數(shù)返回 1;而 6 不存在于數(shù)組中,因此函數(shù)返回 -1。
在實(shí)際應(yīng)用中,二分查找可以用于快速查找有序數(shù)組中的元素,時(shí)間復(fù)雜度為 $O(\log n)$,比線性查找的時(shí)間復(fù)雜度 $O(n)$ 更加高效。
到此這篇關(guān)于js 二分查抄的文章就介紹到這了,更多相關(guān)內(nèi)容可以在右上角搜索或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!