BinarySearch.java :  » Search » fuzzy-search-tools » ru » fuzzysearch » Java Open Source

Java Open Source » Search » fuzzy search tools 
fuzzy search tools » ru » fuzzysearch » BinarySearch.java
package ru.fuzzysearch;

/**
 *    .
 */
public class BinarySearch {

  /**
   *  
   */
  public static interface Comparator {

    public int compare(int index);
  }

  /**
   *     ,   ,     < 0
   * 
   * @param start
   *              ()
   * @param end
   *              ( )
   * @param comparator
   *            
   * @return  
   */
  public static int lowerBound(int start, int end, Comparator comparator) {
    int count = end - start;

    while (count > 0) {
      int current = start;
      int step = count / 2;
      current += step;
      if (comparator.compare(current) < 0) {
        start = ++current;
        count -= step + 1;
      }
      else count = step;
    }
    return start;
  }

  /**
   *     ,    ,     <= 0
   * 
   * @param start
   *              ()
   * @param end
   *              ( )
   * @param comparator
   *            
   * @return  
   */
  public static int upperBound(int start, int end, Comparator comparator) {
    int count = end - start;

    while (count > 0) {
      int current = start;
      int step = count / 2;
      current += step;
      if (comparator.compare(current) <= 0) {
        start = ++current;
        count -= step + 1;
      }
      else count = step;
    }
    return start;
  }
}
java2s.com  | Contact Us | Privacy Policy
Copyright 2009 - 12 Demo Source and Support. All rights reserved.
All other trademarks are property of their respective owners.