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

    ########################################

    二分查找,是一种算法,又称之为折半查找,对于待查找的序列要求必须是有序的。

      步骤:每次取中间位置的值与待查找的值进行比较,如果中间位置的值比待查值大,则在前半部分循环这个查找过程;如果中间位置的值比待查值小,则在后半部分循环这个查找过程。一直查找到为止,否则序列中没有待查找的值。

      比如给定一个数组 [] a={2,3,6,8,9,11,14};

      假如我们找的是a[i]=8这个值的话,因为它在中间位置,就直接返回其数组的下标;

      假如要找的是a[i]=3,则用中间位置的值(8)与待查值(3)进行比较,发现比中间值小,则在左边部分循环进行二分查找,找到值为3对应的位置。

      假如要找的是a[i]=14,则用中间位置的值(8)与待查值(14)进行比较,发现比中间值大,则在右边部分循环进行二分查找,找到值为14对应的位置。

    ########################################

      接下来看代码的具体实现:

     1 public static int BinarySearch(int []array,int a){
     2     int lo=0;
     3     int hi=array.length-1;
     4     int mid;
     5     while(lo<=hi){
     6         mid=(lo+hi)/2;    //中间位置
     7         if(array[mid]==a){
     8             return mid+1;
     9         }else if(array[mid]<a){     //向右查找
    10             lo=mid+1;
    11         }else{     //向左查找
    12             hi=mid-1;
    13         }
    14     }
    15     return -1;
    16 }                    
  • 相关阅读:
    [Js-JDBC]事务
    [Js-JDBC]SQL注入及解决,Statement与PreparedStatement
    [Js-Java SE]IO+Properties配置文件
    [Js-Java SE]可变长参数
    [Js-Java SE]线程同步(加锁)(synchronized,守护进程,死锁,计时器)
    [Js-MySQL]函数
    [Js-MySQL]运算符优先级
    2015年3月30日
    Maven知识点一览
    记一次MySQL(5.7版本)数据库的主从同步和备份
  • 原文地址:https://www.cnblogs.com/HuiH/p/11661065.html
Copyright © 2011-2022 走看看