[算法] 二分查找

思路

  • 如何在有序数组中快速查找某元素
  • 首先看中间元素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 }

 

posted @ 2020-03-05 16:05  cxc1357  阅读(107)  评论(0编辑  收藏  举报