二分查找法

2018-12-18  本文已影响0人  风就那么大

int array[] = {1, 3, 6, 7, 9, 11, 18, 21, 25, 26, 33, 35, 36};

int searchIndex = binarySearch(array, 0, array.length, 65);

System.out.println("查找出的结果  " + searchIndex);

/**

* @param array    查找的数据

* @param fromIndex 开始的起点

* @param toIndex  到中点

* @param key      查找的内容

* @return 二分查找法  必须建立在有序的基础上

*/

public int binarySearch(int array[], int fromIndex, int toIndex, int key) {

int low = fromIndex;

    int high = toIndex -1;

    while (low <= high) {

int mid = (high+low) >>1;// 等同于 (high+low)/2

        int minValue=array[mid];

        //需要查找的值 小于 当前值  高位指针移动

        if (minValue > key) {

high = mid -1;

        }else if (minValue

//需要查找的值 大于 当前值  低位指针移动

            low=mid+1;

        }else{

//两个值相等  返回当前位置

            return mid;

        }

}

return -1;

}

上一篇下一篇

猜你喜欢

热点阅读