(资料图)
二分查找算法是一种常用的查找算法,也被称为折半查找。它可以在有序的数组或列表中快速查找需要的元素。
算法描述:
- 首先确定数组的中间位置mid=(left+right)/2;
- 然后将要查找的值key与中间位置的值进行比较;
- 如果key等于中间位置的值,则查找成功,返回mid;
- 如果key小于中间位置的值,则在左半部分继续查找;
- 如果key大于中间位置的值,则在右半部分继续查找;
- 重复以上步骤,直到查找到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}
该函数接收三个参数,分别是:
- arr:有序数组指针;
- n:数组长度;
- key:要查找的值。
如果查找成功,函数将返回该元素在数组中的下标;否则,返回-1表示查找失败。
注意:使用二分查找算法前,必须先对数组进行排序。