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

      二分查找需要数组是有序的,1、先从有序数组的最中间元素开始查找,如果和要查找的元素相等,直接返回索引,若不相等则下一步。2、如果指定的元素大于或者小于中间元素,则在大于或小于的那一半区域内查找,重复第一步直到找到目标元素。
    不使用递归:
     1 function search(arr,key) {
     2     var low=0;
     3     var height=arr.length-1;
     4     var mid;
     5     while(low<=height){
     6         mid=Math.floor((low+height)/2); 
     7         if(arr[mid]==key){                
     8             return mid;
     9         }else if(arr[mid]<key){     
    10             low=mid+1;            
    11         }else{
    12             height=mid-1;
    13         }
    14     }
    15     return -1;
    16 }
    使用递归:
     1 function search(arr,low,height,key){
     2     height--;
     3     if(low>height){
     4         return -1;
     5     }
     6     var mid=Math.floor((low+height)/2);
     7     if(arr[mid]==key){
     8         return mid;
     9     }else if(arr[mid]<key){
    10         low=mid+1
    11         return search(arr,low,height,key);
    12     }else{
    13         mid=height-1;
    14         return search(arr,low,height,key);
    15     }
    16 }

  • 相关阅读:
    Object-c NSArray
    内存管理池
    Objuct-c 对象的初始化 存起器 属性 self和super 内存管理
    继承什么的
    Object C 多态性
    Objectvie
    (重点) 协议
    分类
    一张图了解Python
    转载 MySql常用查询语句(23种)
  • 原文地址:https://www.cnblogs.com/aizz/p/9348591.html
Copyright © 2011-2022 走看看