二分搜索(binary search)
二分查找实现:
#include <iostream> #include <vector> #define NOT_FOUND -1 using namespace std; template <typename comparable> int binarySearch(const vector<comparable> & a, const comparable & x) { int low = 0; int high = a.size() - 1; while(low <= high) { int mid = (low + high) / 2; if(a[mid] < x) low = mid +1; else if(a[mid] > x) high = mid - 1; else return mid; //Found } return NOT_FOUND; //NOT_FOUNT is defined as -1 } int main() { int find = 5; const size_t arrsize = 10; int intarr[arrsize] = {1,2,3,4,5,6,7,8,9,10}; vector<int> intary ; for (int i = 0; i<arrsize; i++) { intary.push_back(intarr[i]); } int findOne = binarySearch(intary,find); cout << "find: " << find << endl; cout << "findOne: " << intarr[findOne] << endl; return 0; }
注:
二分查找只能对已排我序的序列,运行时间是O(logN)

浙公网安备 33010602011771号