二分查找算法案例

折半查找(二分查找)是一种常见且高效的查找算法,适用于有序数组。其基本思想是首先将数组按照中间位置折半,然后判断待查找元素与中间元素的大小关系,从而确定待查找元素在左半部分还是右半部分。通过不断折半和判断,最终找到待查找元素或确定其不存在。

以下是一个使用折半查找的示例代码:

java 复制代码
public class BinarySearch {
    public static int binarySearch(int[] array, int target) {
        int left = 0;
        int right = array.length - 1;
        
        while (left <= right) {
            int mid = left + (right - left) / 2;
            
            if (array[mid] == target) {
                return mid;
            } else if (array[mid] < target) {
                left = mid + 1;
            } else {
                right = mid - 1;
            }
        }
        
        return -1; // 表示未找到
    }
    
    public static void main(String[] args) {
        int[] array = { 1, 2, 3, 4, 5, 6, 7, 8, 9 };
        int target = 6;
        
        int result = binarySearch(array, target);
        
        if (result != -1) {
            System.out.println("元素 " + target + " 的索引位置为 " + result);
        } else {
            System.out.println("元素 " + target + " 不存在于数组中");
        }
    }
}

以上代码中,binarySearch 方法接收一个有序数组 array 和待查找元素 target,并返回待查找元素在数组中的索引位置,如果不存在则返回 -1。算法使用了两个指针 leftright 来表示当前查找的区间范围,通过循环不断缩小区间,直到找到待查找元素或确定不存在为止。

需要注意的是,前提是数组必须是有序的。如果数组无序,可以在查找之前先对数组进行排序。

相关推荐
tmlx3I08123 分钟前
高光谱拼接算法(六)RANSAC 误匹配剔除
人工智能·算法·机器学习
不相心 -w-33 分钟前
基础-滑动窗口-(定长 | 不定长)
算法
醉城夜风~1 小时前
Java详解经典算法题:接雨水(三种实现方案+原理剖析)
java·开发语言·算法
ysa0510301 小时前
【板子】ST表
c++·笔记·算法·板子
CHHH_HHH2 小时前
【C++11】深入解析C++可变参数模板
开发语言·c++·算法·stl·c++11
hurrycry_小亦2 小时前
洛谷题目:P1215 [USACO1.4] 母亲的牛奶 Mother‘s Milk 题解(本题简)
算法
数智化转型推荐官2 小时前
2026统一身份管理系统五大发展趋势解读
java·运维·微服务
看菜鸡互2 小时前
探索用 SlideML 让大模型生成 PPT 的实验方法
java·运维
KJ_BioMed3 小时前
从PDB到高亲和力分子:De novo生成式计算化学Pipeline剖析
算法·生物医药·生物科研·科研干货·化合物设计
一个王同学3 小时前
从零到一 | CV转多模态大模型 | week17 | LLM 推理优化 & vLLM 详解
人工智能·深度学习·算法·机器学习·计算机视觉·vllm