#include <cstdlib> #include <iostream> #include <vector> #include <algorithm> using namespace std; void binarySearch(const vector<int>::iterator &begin, const vector<int>::iterator &end, int aim) { if(*(begin + (end - begin) / 2) == aim) { cout << "find number: " << aim << endl; return; } if(begin >= end) { cout << "not find number: " << aim << endl; return; } if(aim > *(begin + (end - begin) / 2)) binarySearch(begin + (end - begin) / 2 + 1, end, aim); else binarySearch(begin, begin + (end - begin) / 2 - 1, aim); } void binarySearch(const vector<int> &vec, int aim) { int low = 0; int high = vec.size() - 1; while(low <= high) { if(vec[(low + high) / 2] == aim) { cout << "find the number: " << aim << endl; return; } if(aim > vec[(low + high) / 2]) low = (low + high) / 2 + 1; else high = (low + high) / 2 - 1; } cout << "can not find the number: " << aim << endl; } int main(int argc, char *argv[]) { int i = 0; vector<int> vec; int searchNum = 0; for(; i<100; i++) vec.push_back(i); vector<int>::iterator it = vec.begin(); cout << "input a number: "; cin >> searchNum; binarySearch(vec.begin(), vec.end(), searchNum); //binarySearch(vec, aim); system("PAUSE"); return EXIT_SUCCESS; }