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

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

 //二分查找法
 //封装成一个函数
<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>

 
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值