[算法] 二分查找
思路
- 如何在有序数组中快速查找某元素
- 首先看中间元素v和想要查找元素的关系
- 若小于v,就在v的左侧查找;大于v,就在v的右侧查找;等于v,不再查找
1 template<typename T> 2 int binarySearch(T arr[], int n, T target){ 3 int l = 0, r = n-1; 4 // 在arr[l...r]中查找target 5 while( l <= r ){ 6 int mid = l + (r-l)/2; 7 if( arr[mid] == target ) 8 return mid; 9 if( arr[mid] > target) 10 r = mid - 1; 11 else 12 l = mid + 1; 13 } 14 return -1; 15 }