美文网首页
二分查找法

二分查找法

作者: OakesYa | 来源:发表于2020-05-22 13:48 被阅读0次

    概述

    二分查找在对有序列表中进行查找时比较高效的一种查找算法。它的基本思想是在有序表中,取中间记录作为比较对象,若给定值与中间记录的关键字相等则算查找成功,若给定值小于中间记录的关键字,则在中间记录的左半区继续查找,若给定值大于中间记录的关键字,则在中间记录的右半区继续查找。不断重复上述过程,直到查找成功,或所有查找区域无记录,查找失败为止(大话数据结构)

    时间复杂度

    二分查找等于在有原数据构成的二叉树进行查找,所以时间复杂度为O(logn)

    例子

    public class BinarySearch {
        private static int binarySearchIndex(int[] array, int key) {
            if (array == null || array.length == 0) {
                return -1;
            }
            int length = array.length;
            int low = 1;
            int high = length -1;
            int mid;
            while (low <= high) {
                mid = (high - low) / 2;
                if (array[mid] < key) {
                    low = mid + 1;
                } else if (array[mid] > key){
                    high = mid - 1;
                } else {
                    return mid;
                }
            }
            return -1;
        }
        
        public static void main(String[] args) {
            int[] array = new int[] {0,1,16,24,35,47,59,62,73,88,99};
            System.out.println( binarySearchIndex(array, 35));
        }
    }
    

    上面用Java实现了一个二分查找,当数据量不大时执行效率跟遍历查找不太容易看出来,但是数据量很大的情况下就有感觉。

    相关文章

      网友评论

          本文标题:二分查找法

          本文链接:https://www.haomeiwen.com/subject/swjqahtx.html