21xrx.com
2024-09-20 00:56:11 Friday
登录
文章检索 我的文章 写文章
C++二分查找算法代码实现
2023-07-02 10:48:38 深夜i     --     --
C++ 二分查找 算法 代码实现

C++二分查找算法,也称为折半查找算法,是一种高效的查找算法。它基于已经排好序的已知序列,在每次查找操作中将查找区间缩小一半,从而大大减少了查找操作的次数。本文将介绍C++二分查找算法的代码实现。

在C++中,二分查找算法可以通过递归或循环来实现。下面是递归实现的二分查找算法代码:


int binary_search(int arr[], int left, int right, int target)

{

  if (left > right)

    return -1;

  

  int mid = left + (right - left) / 2;

  if (arr[mid] == target)

    return mid;

  

  else if (arr[mid] < target) {

    return binary_search(arr, mid + 1, right, target);

  }

  else {

    return binary_search(arr, left, mid - 1, target);

  }

}

上述代码中,arr是已知排好序的数组,left、right分别为查找区间的左、右边界,target为目标元素。在递归过程中,每次将查找区间缩小一半,直到找到目标元素或者查找区间为空。如果最终找到目标元素,则返回它的下标;否则,返回-1代表未找到目标元素。

下面是循环实现的二分查找算法代码:


int binary_search(int arr[], int left, int right, int target)

{

  while (left <= right) {

    int mid = left + (right - left) / 2;

    if (arr[mid] == target)

      return mid;

    

    else if (arr[mid] < target) {

      left = mid + 1;

    }

    else

      right = mid - 1;

    

  }

  return -1;

}

在循环实现的代码中,也是通过不断缩小查找区间来实现查找。不同的是,使用了循环代替了递归。如果查找成功,则返回目标元素的下标;否则,返回-1。

总体来说,C++二分查找算法的实现比较简单,但需要注意的是数组必须是已知排好序的,否则算法将无法正确工作。同时,对于较长的数组,使用循环实现比递归更高效。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复