C++ 标准模板库 (STL) 中的二分查找

c++server side programmingprogramming更新于 2024/9/8 4:33:00

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

工作原理

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

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

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

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

语法

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

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<<"数组的元素为 :\n";
   printArray(arr , sizeofarr);
   cout<<"\n对数组元素进行排序。";
   sort(arr , arr+sizeofarr);
   cout<<"\n排序后的数组为:";
   printArray(arr, sizeofarr);
   cout<<"\n要搜索的元素为 4";
   if(binary_search(arr , arr+sizeofarr , 4))
      cout<<"\n找到元素";
   else
      cout<<"\n元素未找到";
}

输出

数组元素为:
1 5 9 7 3 2 0 4
对数组元素进行排序。
排序后的数组为:0 1 2 3 4 5 7 9
要搜索的元素为 4

相关文章