二分查找法

2019-03-21  本文已影响0人  飘雨0103

废话不多说,直接上代码

public static void main(String[] args) {

int srcArray[] = {3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};

    System.out.println(binSearch(srcArray, 0, srcArray.length -1, 81));

}

// 二分查找递归实现

public static int binSearch(int srcArray[], int start, int end, int key) {

int mid = (end - start) /2 + start;

    if (srcArray[mid] == key) {

return mid;

    }

if (start >= end) {

return -1;

    }else if (key > srcArray[mid]) {

return binSearch(srcArray, mid +1, end, key);

    }else if (key < srcArray[mid]) {

return binSearch(srcArray, start, mid -1, key);

    }

return -1;

}

// 二分查找普通循环实现

public static int binSearch(int srcArray[], int key) {

int mid = srcArray.length /2;

    if (key == srcArray[mid]) {

return mid;

    }

int start =0;

    int end = srcArray.length -1;

    while (start <= end) {

mid = (end - start) /2 + start;

        if (key < srcArray[mid]) {

end = mid -1;

        }else if (key > srcArray[mid]) {

start = mid +1;

        }else {

return mid;

        }

}

return -1;

}

上一篇下一篇

猜你喜欢

热点阅读