21xrx.com
2024-12-23 01:50:50 Monday
登录
文章检索 我的文章 写文章
C++实现二分查找算法代码
2023-07-10 08:42:51 深夜i     --     --
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++和二分查找算法将使您成为一个更优秀的程序员。

  
  

评论区

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