算法与数据结构-查找算法之二分查找法

之前给小伙伴们分享了线性查找,那么这篇文章还是以分享查找算法为主,主要讲的是二分查找法

二分查找法

二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

代码举例

/** 二分查找法 */
public class TestBinarySearch {
    public static void main(String[] args) {
        // 目标数组
        int[] arr = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        // 目标元素
        int target = 8;
        // 记录开始位置
        int begin = 0;
        // 记录结束位置
        int end = arr.length - 1;
        // 记录中间位置
        int mid = (begin + end) / 2;
        // 记录目标位置
        int index = -1;
        // 循环查找
        while (true) {
            if (arr[mid] == target) {
                // 判断中间的这个元素是不是要查找的元素
                index = mid;
                break;
            } else {
                // 中间这个元素不是要查找的元素
                if (arr[mid] > target) {
                    // 判断中间这个元素比目标元素大
                    // 把结束位置调整到中间位置前一个位置
                    end = mid - 1;
                } else {
                    // 判断中间这个元素比目标元素小
                    // 把结束位置调整到中间位置后一个位置
                    begin = mid + 1;
                }
                // 取出新的中间位置
                mid = (begin + end) / 2;
            }
        }
        // 打印目标元素的位置
        System.out.println("index:" + index);
    }
}

关于二分查找法的简单实例大概是这样,希望对看文章的小伙伴有所帮助。

你可能感兴趣的:(算法与数据结构-查找算法之二分查找法)