zoukankan      html  css  js  c++  java
  • 二分法查找

    二分法查找,也称折半查找,是一种在有序数组中查找特定元素的搜索算法。查找过程可以分为以下步骤:
    (1)首先,从有序数组的中间的元素开始搜索,如果该元素正好是目标元素(即要查找的元素),则搜索过程结束,否则进行下一步。
    (2)如果目标元素大于或者小于中间元素,则在数组大于或小于中间元素的那一半区域查找,然后重复第一步的操作。
    (3)如果某一步数组为空,则表示找不到目标元素。

    <!DOCTYPE html>
    <html>
      <head>
        <title>demo</title>
        <style type="text/css">
        </style>
        <script type="text/javascript">
        
          function binarySearch(arr,start,end,num){
              
              if(start>=end){
                  alert("查找有误!");
              }
              //排序--必须为有序数组
              arr.sort(function(n1,n2){
                  return n1-n2;
              });
              
              //最后只有两个值得情况
            if(end - start == 1){
                
              if(arr[start] == num){
                return start;
              }else if(arr[end] == num){
                return end;
              }else{
                  return -1;
              }
              
             //其他
            }else{
                
                //中间值的索引
                var center = Math.floor((start + end)/2);
            
                if(num != arr[center]) {//不在中间位置
                  return num > arr[center] ? binarySearch(arr, center, end, num) : binarySearch(arr, start, center, num);
                }else{//正好在中间位置
                    return center;
                }
                
            }
            
          }
          var arr = [12,45,13,10,8,2,20,4,56,25];
          var num1=binarySearch(arr,0,arr.length, 10);
          var num2=binarySearch(arr,0,arr.length, 0);
          console.log(num1);
          console.log(num2);
          
        </script>
      </head>
      <body>
      </body>
    </html>
  • 相关阅读:
    WPF学习之路(八)页面
    面试题整理:C#(一)
    [转载] Tomcat架构分析
    [转载] ConcurrentHashMap原理分析
    [转载] Java并发编程:Lock
    [转载] KAFKA分布式消息系统
    [转载] Java并发编程:Callable、Future和FutureTask
    [转载] Java线程池框架源码分析
    [转载] 红黑树(Red Black Tree)- 对于 JDK TreeMap的实现
    [转载] RED-BLACK(红黑)树的实现TreeMap源码阅读
  • 原文地址:https://www.cnblogs.com/yang0901/p/6774736.html
Copyright © 2011-2022 走看看