C ++标准模板库(STL)中的二进制搜索

二进制搜索(称为对数搜索)是一种搜索算法,用于搜索排序数组中的元素。该算法将数组递归地分为两半,如果在中间位置找到该元素,则返回否则调用除法并再次检查直到找到该元素。

工作

该算法通过将排序数组的中间元素与要搜索的元素进行比较来工作。

如果搜索元素等于中间元素,则返回元素的索引。

如果搜索元素大于中间元素,则在左子数组中搜索,即从中间的下一个元素到数组末尾的子数组。

如果搜索元素小于中间元素,则在右子数组中搜索,即从第一个元素到数组中间之前的元素的子数组。

语法

调用标准二进制排序,使用以下语法-

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