• 二分搜索简介


    概念

    二分搜索算法(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. }

  • 相关阅读:
    【U8+】用友U8成本管理模块下,定额分配标准中无法取到新增存货的数据。
    Jtti:linux如何判断CPU是几核几线程
    Java诊断怎么搞?Arthas技能必不可少
    熬秃了头整理的网工学习笔记和心得,赠与有缘人
    四、文件管理(二)目录
    使用Redis和Lua的原子性实现抢红包功能
    数据湖和数据仓库的区别?
    ASP.NET Core 6框架揭秘实例演示[17]:利用IHttpClientFactory工厂来创建HttpClient
    人生最大的投资是自己
    http 跨域资源共享详解
  • 原文地址:https://blog.csdn.net/aidscooler/article/details/133420653