21xrx.com
2024-12-22 21:44:57 Sunday
登录
文章检索 我的文章 写文章
C++语言实现二分查找算法,并计算比较次数
2023-07-12 21:54:19 深夜i     --     --
C++ 二分查找 算法 比较次数

二分查找算法是一种常见的算法,也叫做折半查找算法。这种算法的基本思想是在有序的序列中,通过每次将数据范围减半来查找目标值。在计算比较次数的时候,每次比较都会将数据操作一次,最终的比较次数取决于数据长度和目标值是否存在。

C++是一种高效的编程语言,在实现二分查找算法时也有很大的帮助。代码如下:


#include <iostream>

using namespace std;

int binarySearch(int arr[], int low, int high, int target, int& compCount)

{

  if(low > high)

    return -1;

  int mid = low + (high - low) / 2;

  if(arr[mid] == target)

    return mid;

  else if(arr[mid] > target)

  {

    compCount++;

    high = mid - 1;

    return binarySearch(arr, low, high, target, compCount);

  }

  else

  {

    compCount++;

    low = mid + 1;

    return binarySearch(arr, low, high, target, compCount);

  }

}

int main()

{

  int arr[] = 14;

  int low = 0;

  int high = sizeof(arr) / sizeof(arr[0]) - 1;

  int target = 11;

  int compCount = 1;

  int result = binarySearch(arr, low, high, target, compCount);

  if(result == -1)

    cout << "未找到指定数字!" << endl;

  else

    cout << "指定数字位于第 " << result + 1 << " 个位置。" << endl;

  cout << "比较次数为:" << compCount << endl;

  return 0;

}

通过上述的代码,我们就可以实现对数组中的数据进行二分查找,并且得到比较次数。在运行示例的过程中,我们可以得到如下的输出结果:

指定数字位于第 4 个位置。

比较次数为:3

从输出结果来看,我们实现的二分查找算法比较高效,比较次数较少。这样的算法应用范围较广,用来查找指定数据的效率明显高于一般的搜索算法。同时,在实现中可以利用C++的高效性,使得二分查找变得更加简单易懂。

  
  

评论区

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