查找/排序算法

//二分查找
public static boolean BinarySearch(int target,int[] array){
        int left = 0;
        int right = array.length - 1;
        while (left <= right) {
            int middle = (left + right) / 2;//中间位置
            if (array[middle] < target) {//小于关键字,舍弃左边
                left = middle + 1;
            } else if (target < array[middle]) {//大于关键字,舍弃右边
                right = middle- 1;
            } else {
                return true;
            }
        }
        return false;
}
//有时会出现left和right非常接近整型最大值的情况,这时如果再这样求中间位置就会出现溢出问题,因此要用代码 middle=left+(right-left)/2 代替。
//二者的功能等价,并且后者不会出现溢出问题
posted @ 2024-03-05 14:18  范腿腿  阅读(25)  评论(0)    收藏  举报