二进制搜索是一种广泛使用的搜索算法,该算法要求在应用搜索之前对数组进行排序。该算法背后的主要思想是将数组一分为二(分而治之),直到找到元素或所有元素用尽。
它通过将数组的中间项与我们的目标进行比较来工作,如果匹配,则返回true;否则,如果中间项大于目标,则在左侧的子数组中进行搜索。
如果中间项小于目标,则在右侧的子数组中执行搜索。二进制搜索的原型是:
binary_search(startaddress,
endaddress, valuetofind)
Parameters :
startaddress: the address of the first
element of the array.
endaddress: the address of the next contiguous
location of the last element of the array.
valuetofind: the target value which we have
to search for.
Returns :
true if an element equal to valuetofind is found, else false.
CPP
// CPP program to implement
// Binary Search in
// Standard Template Library (STL)
#include
#include
using namespace std;
void show(int a[], int arraysize)
{
for (int i = 0; i < arraysize; ++i)
cout << a[i] << ",";
}
int main()
{
int a[] = { 1, 5, 8, 9, 6, 7, 3, 4, 2, 0 };
int asize = sizeof(a) / sizeof(a[0]);
cout << "\nThe array is : \n";
show(a, asize);
cout << "\n\nLet's say we want to search for ";
cout << "\n2 in the array So, we first sort the array";
sort(a, a + asize);
cout << "\n\nThe array after sorting is : \n";
show(a, asize);
cout << "\n\nNow, we do the binary search";
if (binary_search(a, a + 10, 2))
cout << "\nElement found in the array";
else
cout << "\nElement not found in the array";
cout << "\n\nNow, say we want to search for 10";
if (binary_search(a, a + 10, 10))
cout << "\nElement found in the array";
else
cout << "\nElement not found in the array";
return 0;
}
输出
The array is :
1,5,8,9,6,7,3,4,2,0,
Let's say we want to search for
2 in the array So, we first sort the array
The array after sorting is :
0,1,2,3,4,5,6,7,8,9,
Now, we do the binary search
Element found in the array
Now, say we want to search for 10
Element not found in the array
要从最佳影片策划和实践问题去学习,检查了C++基础课程为基础,以先进的C++和C++ STL课程基础加上STL。要完成从学习语言到DS Algo等的更多准备工作,请参阅“完整面试准备课程” 。