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

    二分查找法,顾名思义,是一种一分为二的查找算法,适用于已排序的数组(大数据量),快速地找到所查找数的位置。

    源代码:

    Java代码  收藏代码
    1. /** 
    2.  * @param i 数组 
    3.  * @param key 要查找的Key 
    4.  * @return  
    5.  */  
    6. static int binarySearch(int[] i, int key){  
    7.     Arrays.sort(i);  
    8.     int low = 0;  
    9.     int high = i.length - 1;  
    10.     //int mid = (low + high)/2;        
    11.       
    12.     while(low <= high){              // 计算条件,数组低下标和高下标一直在计算中变化  
    13.         int mid = (low + high)>>1;   // 使用>>比除法计算效率高  
    14.         if(key > i[mid]){  
    15.             low = mid + 1;  
    16.         } else if(key < i[mid]) {  
    17.             high = mid - 1;  
    18.         } else {  
    19.             return mid;  
    20.         }  
    21.     }  
    22.       
    23.     return -1;  
    24. }  

    原理:

             在数组中搜索给定Key时,先确定是有序数组,然后定义数组的最高下标和最低下标high、low,再求出数组的中间下标mid=(low+high)>>1。然后判断,当low<=high成立时,若数组[mid]值大于key时,将数组下标的底值提高为mid+1,反之将高值降低为mid-1,如此,每次将搜索的范围减小一半,大幅提高搜索效率。

    附图:

  • 相关阅读:
    词法分析
    关于编译原理
    词法分析
    编译原理
    对编译原理的一些看法
    spring整合struts2
    spring整合javaWeb
    spring整合hibernate
    spring-transaction事务
    spring-jdbc
  • 原文地址:https://www.cnblogs.com/ilinuxer/p/7158086.html
Copyright © 2011-2022 走看看