xoxobool

成功者,永远成功,失败者,永远失败,我要面对者,走向成功!

导航

二分查找算法

1.二分查找又称折半查找,它是一种效率较高的查找方法。

 二分查找的要求:1.必须采用顺序存储结构

         2.必须按关键字的大小有序排列

package com.hanqi.L;

public class BinarySearch {
/***
 * 二分查找算法
 * 
 * @param srcArray有序数组
 * @param key 查找元素
 * @param key的数组下标,没找到返回-1
 */
    public static void main(String[] args) {
        // TODO 自动生成的方法存根
        int[]srcArray=new int[]{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;   
}
}

 转自风不可追的网易博客

posted on 2016-09-14 08:26  春之林木  阅读(176)  评论(0)    收藏  举报