(资料图)

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

算法描述:

  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表示查找失败。

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

推荐内容