二分查找【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. 中值下标像下取整

猜你喜欢

转载自www.cnblogs.com/chenhongarticles/p/9048102.html