• 二分搜索简介


    概念

    二分搜索算法(Binary Search)是一种高效的搜索算法,用于在有序数组中查找特定元素的位置。它的基本思想是将数组分为两部分,通过比较目标值与数组中间元素的大小关系,确定目标值可能存在的区间,然后不断缩小区间直到找到目标值或确定不存在。二分搜索算法是一种分治法的应用,通过将问题分解为更小的子问题,逐步缩小搜索范围。

    二分搜索算法用于在有序数组中查找特定元素的位置,即确定目标值在数组中的索引。

    算法特点

    1. 二分搜索算法要求有序数组,因为它是通过比较目标值与中间元素的大小关系来确定搜索范围的。
    2. 算法通过将搜索范围不断缩小一半,具有较高的效率。
    3. 二分搜索算法的时间复杂度为O(log n),其中n为数组的长度。

    优点

    • 高效:二分搜索算法的时间复杂度较低,适用于大规模数据集。
    • 简单:算法思想简单直观,易于理解和实现。
    • 适用范围广:适用于有序数组的查找问题。

    缺点

    • 依赖有序数组:二分搜索算法要求输入数组是有序的,如果数组无序,则需要先进行排序。
    • 不适用于动态数据集:如果数据集需要频繁插入或删除元素,二分搜索算法的效率会较低。

    适用场景

    • 二分搜索算法适用于已经排序的静态数据集,例如查找某个元素在字典中的位置、查找某个数字是否在排序好的数组中等。

    实现代码

    1. public class BinarySearch {
    2. public static int binarySearch(int[] arr, int target) {
    3. int left = 0;
    4. int right = arr.length - 1;
    5. while (left <= right) {
    6. int mid = left + (right - left) / 2;
    7. if (arr[mid] == target) {
    8. return mid;
    9. } else if (arr[mid] < target) {
    10. left = mid + 1;
    11. } else {
    12. right = mid - 1;
    13. }
    14. }
    15. return -1;
    16. }
    17. public static void main(String[] args) {
    18. int[] arr = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    19. int target = 6;
    20. int result = binarySearch(arr, target);
    21. if (result == -1) {
    22. System.out.println("目标元素不存在");
    23. } else {
    24. System.out.println("目标元素的索引为 " + result);
    25. }
    26. }
    27. }

  • 相关阅读:
    【数据结构与算法】队列的实现
    临时记录一下
    Databend 源码阅读系列(二):Query server 启动,Session 管理及请求处理
    Web基础与HTTP协议
    【数字】时序逻辑电路的设计
    [附源码]java毕业设计校园博客系统
    Python:实现miller rabin米勒-拉宾素性检验算法(附完整源码)
    线程安全,与多线程的应用
    聚合数据以科技赋能数字化转型,提升金融服务质效
    在浏览器中输入url回车后发生了什么
  • 原文地址:https://blog.csdn.net/aidscooler/article/details/133420653