第一题

Sandals-little / 2023-05-03 / 原文

所用算法:二分搜索

算法说明:二分搜索从有序序列中寻找某个给定的值

算法思想:二分法首先从中心位置开始搜索,如果中心位置的元素正好是要找的元素,搜索完成;如果不是,假如中心位置的元素小于要找的元素,则从序列的后半部分找,如果中心位置的元素大于要找的元素则从中心位置的前半部分找。在缩小的范围中再重新确定一个中心位置重复之前的过程。

 1 class Solution {
 2 public:
 3     bool Find(int target, vector<vector<int> > array) {
 4         for(auto vec_out:array){
 5             auto begin=vec_out.begin(),end=vec_out.end(),mid=begin+(end-begin)/2;
 6             while(mid!=end && target!=*mid){
 7                 if(target<*mid)
 8                     end=mid;
 9                 else
10                     begin=mid+1;
11                 mid=begin+(end-begin)/2;
12             }
13             if(mid!=end&&target==*mid)  return true;
14         }
15         return false;
16     }
17 };