StringBuffer-二分查找

package cn.StringBuffer;

/*二分查找
 *     前提:数组必须是有序的
 *     思想:每次猜中间的那个元素,比较大或者小,就能减少一半的元素
 * 
 * 思路:
 *         定义最小的索引,最大索引
 *         计算出中间的索引
 *         拿中间的索引的值和要查找的元素进行比较
 *             相等:就直接返回当前的中间索引
 *             不相等:
 *                 大了: 在左边找  max = mid - 1;
 *                 小了:在右边找   min = mid + 1;
 *         重新获取最小索引或者最大索引
 *                 大了  在左边找   
 *                 小了  在右边找  
 * 
 *         回到第二步 
 * 
 * */
public class ErFenSearch {
    public static void main(String[] args) {
        int[] arr = { 22, 33, 55, 66, 77, 88, 99, 111 };
        int index = getIndex(arr, 99);
        System.out.println("索引是:" + index);
    }

    public static int getIndex(int[] arr, int value) {
        int max = arr.length - 1;
        int min = 0;
        int mid = (max + min) / 2;
        while (arr[mid] != value) {
            if (arr[mid] > value) {
                max = mid - 1;
            } else {
                min = mid + 1;
            }
            if (min > max) {
                return -1;
            }
            mid = (max + min) / 2;
        }
        return mid;

    }

}

 

posted @ 2015-12-23 01:18  Deleting  阅读(162)  评论(0编辑  收藏  举报