21xrx.com
2024-12-22 22:29:12 Sunday
登录
文章检索 我的文章 写文章
C++实现二分查找算法代码
2023-07-14 11:58:58 深夜i     --     --
C++ 二分查找 算法 代码

二分查找算法是一种非常高效的查找方法,它可以在有序数组中快速找到特定元素的位置。C++是一种常用的编程语言,很多程序员喜欢用它来实现各种算法,包括二分查找算法。下面,我们将介绍如何使用C++来实现二分查找算法的代码。

我们首先需要定义一个函数,该函数名称可以为binarySearch或者search。该函数需要三个参数:目标值target、查找范围的左边界left和右边界right。函数返回的是目标值在数组中的下标,若没有找到,返回-1。函数的实现如下:

int binarySearch(int target, int left, int right, int* arr){

  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;

}

上述代码中,我们使用了while循环来实现二分查找算法。首先,我们计算出数组的中间位置mid。然后,我们根据目标值与中间值的大小关系,来确定下一次查找范围的左边界left和右边界right。如果目标值等于中间值,则返回中间值的下标。如果目标值小于中间值,则在左半部分继续查找;如果目标值大于中间值,则在右半部分继续查找。直到查找范围缩小到0,或者找到目标值为止。

在使用该函数时,我们需要先把数组排好序。因为二分查找算法只能在有序数组中使用。我们可以使用C++中的sort函数来对数组排序。例如:

int arr[6] = 10;

sort(arr, arr + 6);

上述代码中,我们定义了一个大小为6的数组,并初始化了6个元素。然后,我们使用sort函数对数组进行排序,从小到大排序。注意,sort函数的第一个参数是数组的起始地址,第二个参数是数组结束地址+1。在本例中,数组的结束地址是arr+6,因为数组中有6个元素。

最后,我们可以调用binarySearch函数来查找目标值。例如,下面的代码可以查找元素10在数组中的位置:

int result = binarySearch(10, 0, 5, arr);

if(result == -1)

  cout << "Element not found" << endl;

else

  cout << "Element found at index " << result << endl;

上述代码中,我们调用了binarySearch函数,并传入了目标值10和数组的左右边界。函数返回了目标值10在数组中的下标。如果返回-1,则表示该元素不存在于数组中。否则,返回的就是该元素在数组中的下标。

总的来说,C++实现二分查找算法的代码相对比较简单,只需要定义一个函数,然后利用while循环来实现查找即可。但是,这个算法要求数组必须是有序数组,因此在使用前必须先排序。如果你需要在你的项目中使用二分查找算法,那么这个实现代码应该能够满足你的需求。

  
  

评论区

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