js實現二分查找法

二分查找法: 對於有序的數列, 才能使用二分查找法。 ()假設有一個數組長度爲n,開始查找範圍爲[0,n-1],從一個數組的中間位置m,開始查找,如果這個數是,那我們就找到了,如果不是,比較要找的這個數和中間數的大小,如果大於中間的這個數,就從中間這個數+1的位置的右側查找[m+1, n-1],又取這個區間中間的, 如此查找,小於也是一樣的邏輯,直到找到爲止。接下來我就用js實現這段邏輯。

/*
* arr  要找尋的數組
* target  要查找的目標
**/
function binarySearh(arr, target) {
	var n = arr.length;
	var l = 0,r = n-1;  // 聲明查找兩個邊界, 在[l, r] 兩個區間中尋找target
	
	
	while (l <= r) {
		// 中間位置索引
		var mid = l + parseInt((r-l)/2);
		if (target === arr[mid]) {
			return mid;
		} else if (target > arr[mid]) {
			l = mid +1; // 在區間[mid +1, r] 中尋找
		} else if (target < arr[mid]) {
			r = mid - 1; // 在區間[l, mid - 1] 中尋找
		}
	}
	return -1;
}

如有錯誤請指正!!!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章