二分法查找(Binary Search)
适用于查找已排序的序列中是否存在某一特定元素。
使用了函数模板:
//万川先生: 2011.08.21
//BinarySearch--二分查找
#include <iostream>
using namespace std;
template <class T>
int binarySearch(T *a, int len, T value)
{
int min = 0;
int max = len - 1;
while (min <= max) {
int mid = (min + max) / 2;
if (a[mid] == value)
return mid;
else if (a[mid] > value)
max = mid - 1;
else
min = mid + 1;
}
return -1;
}
int main(int argc, char* argv[])
{
double arr[] = {1.1,5.6,7.7,9.1,11.2,18.2,23.3};
double res = binarySearch(arr,
sizeof(arr)/sizeof(*arr), 11.2);
if (res == -1) {
cout << "Element not found!" << endl;
}
else {
cout << "value is found in array, index is "
<< res << "." << endl;
}
return 0;
}