用非递归方法实现二分查找

发布于 2020-01-10 22:27:08
关注者
0
被浏览
675
1 个回答
  • 面试哥
    面试哥 2020-01-10
    为面试而生,有面试问题,就找面试哥。

    --代码如下,二分查找只适用于有序数列,对其进行查找,效率非常高,不适用于无序数列

        public static int binSearch(int srcArray[], int key) {
    		int 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;
    	}
    递归的二分查找
    
    public static int binSearch_di(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_di(srcArray, mid + 1, end, key);
    		} else if (key < srcArray[mid]) {
    			return binSearch_di(srcArray, start, mid - 1, key);
    		}
    		return -1;
    	}
    
    

     

知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看