二分查找

Position BinarySearch(List L,ElementType X)
{    
      if(X<L->Data[1]||X>L->Data[L->Last]) return NotFound;  /*出界*/ 
      int left=1;int right=L->Last;    
      int mid;    
      while(left!=right){        
           mid=(left+right)/2;        
           if(L->Data[mid]>X) right=mid;  /*right可向左移动*/      
           if(X>L->Data[mid]) left=mid+1;  /*mid为向下取整,mid+1保证left能够向右移动直至退出循环 */   
           if(X==L->Data[mid]) break;    
           }    
      if(left==right){        
          if(L->Data[left]!=X) return NotFound;        
          else return left;    
      }    
      else return mid;
 }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值