查找算法

查找算法

二分查找

  • 二分查找(Binary Search)是一种高效的查找算法,适用于在有序数组或列表中查找特定元素。

  • 基本原理:

    • 有序数组:二分查找要求数组或列表必须是有序的(升序或降序)。
    • 中间值比较:通过比较目标值与数组中间元素的大小关系,决定下一步查找的范围。
    • 逐步缩小范围:每次比较后,查找范围会缩小一半,直到找到目标值或范围为空。
  • 算法步骤:

    • 初始化
      • 定义两个指针:leftright,分别指向数组的起始和末尾。
      • left = 0right = len(array) - 1
    • 循环查找
      • 计算中间位置:mid = left + (right - left) // 2
      • 比较中间值 array[mid] 与目标值 target
        • 如果 array[mid] == target,找到目标,返回 mid
        • 如果 array[mid] < target,目标在右半部分,更新 left = mid + 1
        • 如果 array[mid] > target,目标在左半部分,更新 right = mid - 1
    • 终止条件
      • left > right 时,查找范围为空,表示目标值不存在,返回 -1
  • 代码实现:

    • public static int binarySearch(int[] arr, int target) {
          //初始化指针
          int left = 0;
          int right = arr.length-1;
      
          //循环查找
          while (left <= right) {
              //计算中间位置
              int mid = (left + right) / 2;
              //比较中间值和目标值
              if(arr[mid]==target){
                  return mid;
              }
              if (arr[mid] > target) {
                  right = mid - 1;
              } else if (arr[mid] < target) {
                  left = mid + 1;
              }
          }
      
          return -1;
      }
      
posted @ 2025-03-26 18:15  QAQ001  阅读(10)  评论(0)    收藏  举报