二分法查找

java 二分法查找 

2010-06-18 18:32:48|  分类: java基础 |举报|字号 订阅
/**
* java基本算法 二分法查找
* 前提int数组是升序排列
* 推荐冒泡
* 二分查找又称折半查找,它是一种效率较高的查找方法。
*二分查找要求:线性表是有序表,即表中结点按关键字有序,并且要用向量作为表的存储结构。不妨设有序表是递增有序的

public class TestBinSearch {  
 
    /** 
     * @param args 
     */ 
    public static void main(String[] args) {    
        int a[] = { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };  
        System.out.println(binSearch(a, 0, a.length - 1, 100));  
    }  
 
    // 二分查找递归实现  
    public static int binSearch(int a[], int start, int end, int key) {  
 
        int mid = (end - start) / 2 + start;  
        if (a[mid] == key) {  
            return mid;  
        }  
        if (start >= end) {  
            return -1;  
        } else if (key>a[mid]) {  
            return binSearch(a, mid + 1, end, key);  
        } else if (key<a[mid]) {  
            return binSearch(a, start, mid - 1, key);  
        }  
        return -1;  
 
    }  
 
    // 二分查找普通循环实现  
    public static int binSearch(int a[], int key) {  
 
        int mid = a.length / 2;  
        if (key == a[mid]) {  
            return mid;  
        }  
 
        int start = 0;  
        int end = a.length - 1;  
        while (start <= end) {  
            mid = (end - start) / 2 + start;  
 
            if (key < a[mid]) {  
               end = mid - 1;  
            } else if (key > a[mid]) {  
                start = mid + 1;  
            } else {  
                return mid;  
            }  
        }  
        return -1;  
    }
   
  
}

你可能感兴趣的:(二分法查找)