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;
}

如有错误请指正!!!

原创文章 17 获赞 65 访问量 6482

猜你喜欢

转载自blog.csdn.net/m0_37685031/article/details/105536204
今日推荐