二分查找算法是一种常用的查找算法,也被称为折半查找。它可以在有序的数组或列表中快速查找需要的元素。

算法描述:

  1. 首先确定数组的中间位置mid=(left+right)/2;
  2. 然后将要查找的值key与中间位置的值进行比较;
  3. 如果key等于中间位置的值,则查找成功,返回mid;
  4. 如果key小于中间位置的值,则在左半部分继续查找;
  5. 如果key大于中间位置的值,则在右半部分继续查找;
  6. 重复以上步骤,直到查找到key或者left>right时,查找结束。

C++代码实现:

int binarySearch(int arr[], int n, int key)
{
    int left = 0;
    int right = n - 1;
    while (left <= right)
    {
        int mid = (left + right) / 2;
        if (arr[mid] == key)
            return mid;
        else if (arr[mid] > key)
            right = mid - 1;
        else if (arr[mid] < key)
            left = mid + 1;
    }
    return -1; // 查找失败,返回-1
}

该函数接收三个参数,分别是:

  1. arr:有序数组指针;
  2. n:数组长度;
  3. key:要查找的值。

如果查找成功,函数将返回该元素在数组中的下标;否则,返回-1表示查找失败。

注意:使用二分查找算法前,必须先对数组进行排序。

内容来源于网络如有侵权请私信删除

文章来源: 博客园

原文链接: https://www.cnblogs.com/oiercc/p/17361931.html

你还没有登录,请先登录注册
  • 还没有人评论,欢迎说说您的想法!