2 #include <stdlib.h>
3 #include <vector>
4 #include <iostream>
5 using namespace std;
6 template<typename T>
7 int binarySearch(const vector<T> &a, const T &x, int& aiTimes)
8 {
9 int low = 0;
10 int high = a.size() - 1;
11
12 while(low <= high)
13 {
14 ++aiTimes;
15 int mid = (low + high) / 2;
16
17 if(a[mid] < x)
18 {
19 low = mid + 1;
20 }
21 else if(a[mid] > x)
22 {
23 high = mid - 1;
24 }
25 else
26 {
27 return mid;
28 }
29 }
30
31 return -1;
32 }
33
34 int main(int argc, char* argv[])
35 {
36 vector<int> lveci;
37 lveci.resize(100);
38 for(int i = 0; i < 100; ++i)
39 {
40 lveci[i] = i;
41 }
42
43 int liTimes = 0;
44 cout << binarySearch(lveci, -1, liTimes);
45 cout <<"\tcost:" <<liTimes <<endl;
46 liTimes = 0;
47 cout << binarySearch(lveci, 0, liTimes);
48 cout <<"\tcost:" <<liTimes <<endl;
49 liTimes = 0;
50 cout << binarySearch(lveci, 1, liTimes);
51 cout <<"\tcost:" <<liTimes <<endl;
52 liTimes = 0;
53 cout << binarySearch(lveci, 2, liTimes);
54 cout <<"\tcost:" <<liTimes <<endl;
55 liTimes = 0;
56 cout << binarySearch(lveci, 100, liTimes);
57 cout <<"\tcost:"<<liTimes <<endl;
58
59
60
61 exit(0);
62 }
63