• 二分查找【JavaScript】


     1 <!DOCTYPE html>
     2 <html>
     3 <head>
     4 <title>2.html</title>
     5 <script>
     6     function binarySearch(arr, findVal, leftIndex, rightIndex) {
     7         //使用二分查找的条件是 arr是有序数组
     8         //终止条件1. 找不到
     9         if (leftIndex > rightIndex) {
    10             document.writeln("找不到");
    11             return;
    12         }
    13         var midIndex = Math.floor((leftIndex + rightIndex) / 2);
    14         var midVal = arr[midIndex];
    15         if (midVal > findVal) {
    16             binarySearch(arr, findVal, leftIndex, midIndex - 1);
    17         } else if (midVal < findVal) {
    18             binarySearch(arr, findVal, midIndex + 1, rightIndex);
    19         } else {
    20             document.writeln("找到了,下标是" + midIndex); //终止条件2. 找到了
    21             return;
    22         }
    23     }
    24     var arr = [ 1, 2, 3, 4, 5, 6 ];
    25     //arr    是有序数组
    26     binarySearch(arr, 5, 0, arr.length - 1);
    27 </script>
    28 </head>
    29 <body>
    30 </body>
    31 </html>

    1. 有序数组

    2. 两个终止条件(找不到leftIndex>rightIndex)

    3. 中值下标像下取整

  • 相关阅读:
    10.17T1 联通块
    10.16复习 数位DP——不要62
    10.16T6 逆序对变式
    10.16T5 最小环+拆点最短路
    10.16T4 GCD递归
    10.16T2 平方差
    10.16T3 乱搞+最优性剪枝
    10.16T1 二分+单调队列优化DP
    10.15T3 树形DP
    10.15T2 生成树+非树边暴力
  • 原文地址:https://www.cnblogs.com/chenhongarticles/p/9048102.html
Copyright © 2020-2023  润新知