二分查找法

简介: 二分查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。

1)算法原理:

又叫折半查找,要求待查找的序列有序。每次取中间位置的值与待查关键字比较,如果中间位置
的值比待查关键字大,则在前半部分循环这个查找的过程,如果中间位置的值比待查关键字小,
则在后半部分循环这个查找的过程。直到查找到了为止,否则序列中没有待查的关键字。
(2)代码示例:

/**
 * 二分查找
 * @param srcArray 源数组
 * @param des 目标元素
 * @return 如果找到则返回索引位置,找不到则返回-1
 */
public static int binarySearch(int[] srcArray, int des) {
    //定义初始最小、最大索引
    int start = 0;
    int end = srcArray.length - 1;
    //确保不会出现重复查找,越界
    while (start <= end) {
        //计算出中间索引值  >>> 逻辑右移 也就是 int middle = (end + start)/2
        int middle = (end + start)>>>1 ;//防止溢出
 
        if (des == srcArray[middle]) {
            return middle;
            //判断下限
        } else if (des < srcArray[middle]) {
            end = middle - 1;
            //判断上限
        } else {
            start = middle + 1;
        }
    }
    //若没有,则返回-1
    return -1;
}
目录
相关文章
|
4月前
|
算法
二分查找法的时间复杂度
【10月更文挑战第9天】
233 2
|
9月前
|
存储 算法
02 顺序查找
顺序查找   顺序查找也可以叫做线性查找。它对顺序表和链表都适用。对于顺序表可以通过数组下标递增扫描每个元素;链表通过指针 next 依次扫描每个元素。顺序表通常分为:对一般的无序线性表的顺序查找和按关键字有序的线性表的顺序查找。 一般线性表的顺序查找
95 0
|
存储 算法
【查找算法】二叉排序树查找法
【查找算法】二叉排序树查找法
二分法查找(折半查找)
二分法查找(折半查找)
95 0
|
算法
04查找算法:顺序查找法、二分查找法
04查找算法:顺序查找法、二分查找法
162 0
04查找算法:顺序查找法、二分查找法
二分法查找(非递归)
二分查找法是查找算法里面,经典又比较简单的一种。它适用于从有序的数列中进行查找(比如数字和字母等),将数列排序后再查找。 二分查找法的运行时间为对数时间O(㏒₂n),即查找到需要的目标位置最多只需要㏒₂n 步。假设从[0, 99]的队列(100 个数,即 n=100)中寻到目标数 30,则需要查找步数为㏒₂100 , 即最多需要查找 7 次( 26 < 100 < 27)。
|
存储 算法 PHP
查找算法:二分查找法(折半查找)
查找算法:二分查找法(折半查找)
140 0
查找算法:二分查找法(折半查找)
|
算法 Java C语言
顺序查找
顺序查找
148 0
顺序查找