javascript中二分查找法的两种实现方式

来源:互联网 发布:linux解压zip 编辑:程序博客网 时间:2024/05/01 23:23

一.利用函数的递归解决问题

 //二分查找法 //封装成一个函数<script>  <!--            function search(arr,findval,leftindex,rightindex)             {                if(leftindex<=rightindex)              {              var mid_index=Math.floor((leftindex+rightindex)/2);              var mid_val=arr[mid_index];              if(mid_val>findval)              {                           search(arr,findval,leftindex,mid_index-1);              }else if(mid_val<findval)              {              search(arr,findval,mid_index+1,rightindex);              }              else{document.writeln("您要查找的值的下标是:"+mid_index);return;              }             }             else                  {                        document.writeln("您输入有误!");                         return;                   }              }              var arr=[1,3,4,5,6,7,8,9];             search(arr,4,arr.length-1,0);//--></script>

二.利用循环解决问题

 <strong><strong>//利用循环解决问题              <script>  </strong><pre name="code" class="javascript"><strong>  <!--                        function search(arr,findval,rightindex)             {    var flag=true;                  var leftindex=0;                  while(leftindex<=rightindex)                  {                        var mid_index=Math.floor((leftindex+rightindex)/2);                        var mid_val=arr[mid_index];                        if(mid_val>findval)                        {                              rightindex=mid_index-1;                        }                        else if(mid_val<findval)                        {                              leftindex=mid_index+1;                        }                        else if(mid_val=findval)                        {    flag=false;                              document.writeln("您要查找的值的下标是:"+mid_index);                              return;                        }                   }                  if (flag)                  {                    document.writeln("您查找的值不存在!");                  }              }              var arr=[1,3,4,5,6,7,8,9];             search(arr,1,arr.length-1);//--></script></strong>


0 0