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

更新于:2020年1月3日

173 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告