博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1.二分查找递归与迭代实现
阅读量:3957 次
发布时间:2019-05-24

本文共 755 字,大约阅读时间需要 2 分钟。

二分查找原理简单,细节是魔鬼。

 

1.递归实现

function Bsort(arr, left, right, target){  if(left <= right){    let mid = Math.floor((left+right)/2)    if(arr[mid] > target){      return Bsort(arr, left, mid-1, target)    }else if(arr[mid] < target){      return Bsort(arr, mid+1, right, target)    }else{      return mid    }  }  return -1}const arr= [1,3,6,7,8,9,10,11]let res = Bsort(arr, 0, arr.length-1, 1)res

 

2.迭代

function Bsort(arr, left, right, target){  while(left <= right){    // 细节是魔鬼,这里一定是“<=”(当最后比较的为下标6和7时)    let mid = Math.floor((left+right)/2)    if(arr[mid] > target){      right = mid - 1    }else if(arr[mid] < target){      left = mid + 1    }else{      return mid    }  }  return -1}const arr= [1,3,6,7,8,9,10,11]let res = Bsort(arr, 0, arr.length-1, 6)res

 

转载地址:http://nzxzi.baihongyu.com/

你可能感兴趣的文章
杭电ACM——4864,Task(贪心)
查看>>
北大ACM——3176,Cow Bowling(动态规划)
查看>>
北大ACM——2229,Sumsets(DP或思维)
查看>>
北大ACM——3186,Treats For The Cows(DP)
查看>>
杭电ACM——蝎子搬新家(贪心)
查看>>
杭电ACM——处理木棍(贪心)
查看>>
杭电ACM——broomstick训练营(贪心)
查看>>
杭电ACM——1018,Big Number(思维)
查看>>
杭电ACM——6463(思维)
查看>>
杭电AC——6561(思维)
查看>>
杭电ACM——1034,Candy Sharing Game
查看>>
杭电ACM——建房子(贪心)
查看>>
杭电ACM——1297,Children’s Queue(递推)
查看>>
杭电ACM——1003,Max Sum(DP)
查看>>
杭电ACM——1042,N!(思维)
查看>>
杭电ACM——1060,Leftmost Digit(思维)
查看>>
杭电ACM——1061,Rightmost Digit(思维)
查看>>
杭电ACM——1087,Super Jumping! Jumping! Jumping!(DP)
查看>>
杭电ACM——fatmouse's speed(DP)
查看>>
杭电ACM——毛毛虫(DP)
查看>>