欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

javascript二叉查找

謝彥文1年前6瀏覽0評論

Javascript二叉查找是一種非常有用的算法,它可以用來在有序數(shù)組中快速查找目標(biāo)元素。它的原理是把數(shù)組不斷分成兩半,只保留可能包含目標(biāo)元素的那一半,再持續(xù)縮小范圍,直到找到目標(biāo)元素為止。由于每次都是二分割數(shù)組,所以被稱為二叉查找。

下面是一段基本的二叉查找代碼。假設(shè)我們有一個數(shù)組arr,它按照從小到大的順序排列,我們需要查找其中的一個目標(biāo)元素target:

function binarySearch(arr, target) {
let left = 0;
let right = arr.length - 1;
while (left <= right) {
let mid = Math.floor((left + right) / 2);
if (arr[mid] === target) {
return mid;
} else if (arr[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}

以上代碼中的while循環(huán)是核心部分,其中l(wèi)eft和right分別代表目前待查范圍的左右邊界,每次將中間點(diǎn)mid拿到手,與目標(biāo)元素作比較,再根據(jù)mid與target的相對大小來向左或者向右縮小范圍。

如果數(shù)組中沒有目標(biāo)元素,會返回-1作為結(jié)果。下面我們用一個實(shí)際例子來說明二叉查找的使用方法。

假設(shè)我們有一個有序數(shù)組arr = [3, 6, 9, 12, 15, 18, 21],現(xiàn)在想在里面查找數(shù)字12。首先設(shè)定left=0、right=7,進(jìn)入while循環(huán)。mid=3,與12比較,不相等。因?yàn)閍rr[mid]< 12,所以left=mid+1=4,縮小查詢范圍為[15, 18, 21],循環(huán)繼續(xù)。mid=5,與12比較,也不相等。因?yàn)閍rr[mid] >12,所以right=mid-1=4,縮小查詢范圍為[15],循環(huán)繼續(xù)。mid=4,與12比較,還是不相等。由于left>right,循環(huán)結(jié)束,返回-1。因?yàn)?2不在數(shù)組中。

再看一個例子,假設(shè)我們現(xiàn)在找21。同樣進(jìn)入while循環(huán),mid=3與21比較,因?yàn)閍rr[mid]< 21,所以在[15, 18, 21]這個范圍內(nèi)查找。mid=5與21比較,因?yàn)閍rr[mid] >21,所以在[15, 18]這個范圍內(nèi)查找。mid=4與21比較,發(fā)現(xiàn)相等,返回mid=4。因此,數(shù)字21在數(shù)組arr的第5個位置。

在以上實(shí)例中,我們可以明顯地看到二叉查找的速度非常快。即使在稍微更大的數(shù)組中,比如數(shù)百萬個元素,也不會消耗太多時間和系統(tǒng)資源。這也是二叉查找算法被廣泛應(yīng)用的原因之一。

總結(jié):Javascript二叉查找是一種高效的有序數(shù)組元素查找算法,可以運(yùn)用于大規(guī)模數(shù)據(jù)查詢。它可以快速地定位到目標(biāo)元素,并且可以在極短的時間內(nèi)返回查詢結(jié)果。以上代碼示例和實(shí)際應(yīng)用,希望可以幫助讀者更好地理解二叉查找算法。