zoukankan      html  css  js  c++  java
  • 用Java写一个折半查找

    import java.util.Comparator;  
      
    public class MyUtil {  
      
       public static <T extends Comparable<T>> int binarySearch(T[] x, T key) {  
          return binarySearch(x, 0, x.length- 1, key);  
       }  
      
       // 使用循环实现的二分查找  
       public static <T> int binarySearch(T[] x, T key, Comparator<T> comp) {  
          int low = 0;  
          int high = x.length - 1;  
          while (low <= high) {  
              int mid = (low + high) >>> 1;  
              int cmp = comp.compare(x[mid], key);  
              if (cmp < 0) {  
                low= mid + 1;  
              }  
              else if (cmp > 0) {  
                high= mid - 1;  
              }  
              else {  
                return mid;  
              }  
          }  
          return -1;  
       }  
      
       // 使用递归实现的二分查找  
       private static<T extends Comparable<T>> int binarySearch(T[] x, int low, int high, T key) {  
          if(low <= high) {  
            int mid = low + ((high -low) >> 1);  
            if(key.compareTo(x[mid])== 0) {  
               return mid;  
            }  
            else if(key.compareTo(x[mid])< 0) {  
               return binarySearch(x,low, mid - 1, key);  
            }  
            else {  
               return binarySearch(x,mid + 1, high, key);  
            }  
          }  
          return -1;  
       }  
    } 
    

      

  • 相关阅读:
    JQ分页练习
    Dom1
    JQ轮播图
    Dom操作
    DYR
    jQ点击事件
    [z]vc boost安装
    [z] .net与java建立WebService再互相调用
    [z]
    git常用命令二
  • 原文地址:https://www.cnblogs.com/qq1141100952com/p/13255429.html
Copyright © 2011-2022 走看看