二分查找

二分查找(折半查找)

前提:排好顺序的数据

//元素存在 返回索引,否则返回-1
public static int binarySearch(int[] arr, int data) {
    int left = 0;
    int right = arr.length - 1;
    while(left <= right){//当左边索引大于右边时仍未找到data则元素不存在
        int mid = (left + right) / 2;
        if (arr[mid] < data){//中间索引处的值比要查找的值小
            left = mid + 1;//将左边索引更新为中间索引+1,反之right=mid-1
        } else if (arr[mid] > data){
            right = mid - 1;
        } else if (arr[mid] == data){
            return mid;
        }
    }
    return -1;
}
posted @ 2022-11-01 10:20  都是废话说了  阅读(16)  评论(0)    收藏  举报