zoukankan      html  css  js  c++  java
  • 复习折半查找的两种实现方法

    折半查找:必须是在有序的表中进行。这是重要的一点。这折半查找提高了效率。

     1.待查找数据值比中间元素值小,则以整个查找范围的前半部分作为新的查找范围。

    2.待查找数据值比中间元素值大,则以整个查找范围的后半部分作为新的查找范围。

    一种是实现的角标;一种是直接实现的数值。

    //折半查找就是找到,必须是有序的列表。
    public class halfsearch {
     public static void mian(String args[]){
      
      
      int[]arry={1,10,51,3,4,5};
      int jg=halfSearch(arry, 2);
      System.out.print(jg);
      
      
     }
     //折半查找第一种方法
      public static int halfSearch(int[] arry,int key){
             int min=0;
             //最大的角表;
             int max=arry.length-1;
             int mid;
            
             while(max>min){
              mid=(min+max)/2;
              if(key>mid){
               min=mid+1;
              }
              else if(key<mid) {
               max=mid=1;
              }else
               //返回的是角标
               return mid;
             }
             //不再范围内的时候就是越界反悔-1
      return -1;
      
      
      }
    //第二种方法
      public static int halfSearch_2(int[] arry,int key){
       int min=0;
       int max=arry.length-1;
       int mid=(min+max)/2;
       //比较的是中间的值和要找的值进行比较
       while(key!=arry[mid]){
        if(key>arry[mid]){
         min=mid+1;
        }else if(key<arry[mid]){
         max=mid-1; 
        }
        //如果最大的值和最小的值重合以后返回-1
        else if(min>max){
         return -1;
         }
         mid=(min+max)/2;
       
       }
      
        return mid;
      
      
      }
    }

  • 相关阅读:
    D. Babaei and Birthday Cake--- Codeforces Round #343 (Div. 2)
    Vijos P1389婚礼上的小杉
    AIM Tech Round (Div. 2) C. Graph and String
    HDU 5627Clarke and MST
    bzoj 3332 旧试题
    codeforces 842C Ilya And The Tree
    codesforces 671D Roads in Yusland
    Travelling
    codeforces 606C Sorting Railway Cars
    codeforces 651C Watchmen
  • 原文地址:https://www.cnblogs.com/gaopeng781/p/4318603.html
Copyright © 2011-2022 走看看