21xrx.com
2024-12-22 22:15:47 Sunday
登录
文章检索 我的文章 写文章
C++代码:二分查找,返回查找次数
2023-06-27 17:58:20 深夜i     --     --
C++ 二分查找 返回 查找次数

二分查找是一种快速查找有序数组中元素的算法。它的基本思想是将待查找的元素不断地与中间元素进行比较,以缩小查找的范围,最终找到目标元素或确定其不存在。

下面是一段C++代码,实现了二分查找,并返回了查找的次数:


#include <iostream>

using namespace std;

int binarySearch(int arr[], int n, int target)

{

  int left = 0, right = n - 1, mid, count = 0;

  while (left <= right) {

    count++;

    mid = (left + right) / 2;

    if (arr[mid] == target)

      return count;

     else if (arr[mid] < target) {

      left = mid + 1;

    } else

      right = mid - 1;

    

  }

  return -1;

}

int main()

{

  int arr[] = 3;

  int n = sizeof(arr) / sizeof(arr[0]);

  int target = 9;

  int result = binarySearch(arr, n, target);

  if (result == -1)

    cout << "查找失败" << endl;

   else 查找次数为" << result << endl;

  

  return 0;

}

在上述代码中,我们定义了一个binarySearch函数,用于实现二分查找。它的参数包括:

- arr:待查找的数组;

- n:数组的元素个数;

- target:待查找的目标元素。

函数中的left和right变量表示待查找区间的左右端点,mid表示区间的中间位置。count表示查找的次数,每进入一次循环,就将count加1,最终返回这个值。

在binarySearch函数中,我们使用while循环不断缩小查找的范围,直到找到目标元素或确定其不存在。具体的逻辑如下:

- 如果中间元素等于目标元素,那么查找成功,返回count;

- 如果中间元素小于目标元素,那么目标元素可能在右半部分,将左端点left移动到mid+1处;

- 如果中间元素大于目标元素,那么目标元素可能在左半部分,将右端点right移动到mid-1处。

如果循环结束后仍然未找到目标元素,那么说明该元素不存在于数组中,返回-1表示查找失败。

最后,在主函数main中,我们定义了一个数组arr,并调用binarySearch函数查找其中的元素9。如果查找成功,输出查找次数。否则输出查找失败。在上述代码中,查找次数为3,即将6个元素分成3个区间进行查找。

总之,二分查找是一种十分常用的算法,能够快速查找有序数组中的元素。通过上述C++代码,可以更加深入地了解二分查找算法的实现过程。

  
  

评论区

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