二进制搜索(称为对数搜索)是一种搜索算法,用于搜索排序数组中的元素。该算法将数组递归地分为两半,如果在中间位置找到该元素,则返回否则调用除法并再次检查直到找到该元素。
该算法通过将排序数组的中间元素与要搜索的元素进行比较来工作。
如果搜索元素等于中间元素,则返回元素的索引。
如果搜索元素大于中间元素,则在左子数组中搜索,即从中间的下一个元素到数组末尾的子数组。
如果搜索元素小于中间元素,则在右子数组中搜索,即从第一个元素到数组中间之前的元素的子数组。
调用标准二进制排序,使用以下语法-
binary_search(start_address , end_address , element)
start_address是数组第一个元素的地址。
end_address是数组最后一个元素的地址。
element是要在数组中找到的元素。
如果找到,则返回一个整数,其值等于数组中元素的索引,否则返回0。
#include <algorithm> #include <iostream> using namespace std; void printArray(int a[], int arraysize){ for (int i = 0; i < arraysize; ++i) cout << a[i] << " "; } int main(){ int arr[] = {1 , 5, 9, 7 , 3, 2 , 0 , 4}; int sizeofarr = sizeof(arr)/sizeof(arr[0]); cout<<"The Element of array are :\n"; printArray(arr , sizeofarr); cout<<"\nSorting Elements of array."; sort(arr , arr+sizeofarr); cout<<"\nSorted array is : "; printArray(arr, sizeofarr); cout<<"\nElement to be searched is 4"; if(binary_search(arr , arr+sizeofarr , 4)) cout<<"\nElement found "; else cout<<"\nElement not found"; }
输出结果
The Element of array are : 1 5 9 7 3 2 0 4 Sorting Elements of array. Sorted array is : 0 1 2 3 4 5 7 9 Element to be searched is 4