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;
      
      
      }
    }

  • 相关阅读:
    黑马程序员——指针的应用
    黑马程序员——C语言基础常量、运算符、函数
    黑马程序员——数组
    黑马程序员——循环结构for,while,do..while
    webView去掉右侧导航条
    使用Eclipse构建Maven的SpringMVC项目
    win7 自动登录
    eclipse 自动提示
    apache+php+mysql 环境配置
    KMP子串查找算法
  • 原文地址:https://www.cnblogs.com/gaopeng781/p/4318603.html
Copyright © 2011-2022 走看看