算法 --- 二分法

tech2023-08-17  98

二分法

二分法是算法中比较重要的一个算法,昨天刷题遇到了,今天来总结一下 二分法就是逐渐缩小一半区间,直到匹配成功 二分法适合已经排序好的数组

循环二分法

// n 是数组长度, v是猜测的数, a是数组 function xunhuan(n, v, a) { // 当左右区间相等时候就表示找到了那个数的位置 let left = 0 let right = n while (left < right) { let mid = Math.floor((left + right) / 2); if (a[mid] >= v) { if (mid === 0 || a[mid - 1] < v) return mid right = mid } else { left = mid ; } } }

递归二分法

// a是数组 v是猜测的数,left是左边界,right是右边界 function digui(a,v,left,right) { int mid = (left + right) / 2; if (a[mid] == v) { return mid; } else if (a[mid] > v) { //如果中间值大于要找的值则从左边一半继续递归 return digui(a, v, left, mid - 1); } else { //如果中间值小于要找的值则从右边一半继续递归 return digui(a, v, mid + 1, a.length-1); } }
最新回复(0)