21xrx.com
2025-03-26 16:02:41 Wednesday
文章检索 我的文章 写文章
C++实现二分查找算法代码
2023-07-10 08:42:51 深夜i     18     0
C++ 二分查找 算法 代码

二分查找算法,也称为折半查找,是一种在有序数组中查找特定元素的算法。该算法通过不断将目标值与数组中间元素进行比较,缩小查找范围,最终找到目标值或确定目标值不存在于数组中。

C++是一种流行的编程语言,许多程序员使用C++实现二分查找算法。以下是C++实现二分查找算法的代码:

int binarySearch(int arr[], int low, int high, int target) {
  while (low <= high) {
    int mid = low + (high - low) / 2;
    if (arr[mid] == target) return mid;
    else if (arr[mid] < target) low = mid + 1;
    else high = mid - 1;
  }
  return -1;
}

该函数接受一个整数数组、数组的起始位置和终止位置以及目标值。它使用一个while循环来依次搜索数组中的元素,直到找到目标值或确定目标值不存在于数组中。

在循环中,首先计算数组中间位置的索引,然后利用中间索引和目标值进行比较。如果中间索引的值等于目标值,则返回该索引。如果中间索引的值小于目标值,则目标值可能存在于数组的右半部分,因此向右移动。否则,目标值可能存在于数组的左半部分,因此向左移动。

如果数组中不存在目标值,则while循环停止,函数返回-1。

下面是一个使用上述函数的示例:

int main() {
  int arr[] = 1;
  int n = sizeof(arr) / sizeof(arr[0]);
  int target = 7;
  int index = binarySearch(arr, 0, n - 1, target);
  if (index == -1) cout << "目标值不存在于数组中" << endl;
  else cout << "目标值在数组中的索引为:" << index << endl;
  return 0;
}

该示例定义了一个整数数组arr和目标值target,并调用binarySearch函数来查找目标值在数组中的索引。如果目标值存在于数组中,则打印该索引;否则,打印一条消息表明目标值不存在于数组中。

二分查找算法是一种高效的算法,它通常比线性搜索算法快得多。使用C++实现它只需要几行代码,并且易于理解和调试。无论您是学生还是专业程序员,掌握C++和二分查找算法将使您成为一个更优秀的程序员。

  
  

评论区