搜索分为:顺序搜索,二叉搜索,二分搜索、
顺序搜索:对序列进行遍历,知道出现需要查找的数据
二叉搜索:又称为二叉树搜索,左边节点小于根节点,小于右边节点,三者大小为
左边节点<根节点<右边节点
二分搜索:这个建立在数据为有序的情况,然后通过目标值与序列中位数比较
上题就可以使用二分法来进行搜索
class Solution {
public:
int search(vector<int>& nums, int target) {
int right = nums.size()-1;
int left = 0;
while(left<= right){
int middle = left + (right - left)/2;
if(nums[middle]>target)
right=middle-1;
else if(nums[middle]<target)
left=middle+1;
else if(nums[middle]==target) return middle;
}
return -1;
}
};
class Solution {
public:
int search(vector<int>& nums, int target) {
int right = nums.size()-1;
int left = 0;
while(left<= right){
int middle = left + (right - left)/2;
if(nums[middle]>target)
right--;
else if(nums[middle]<target)
left++;
else if(nums[middle]==target) return middle;
}
return -1;
}
};
前者比后者消耗内存更少,效率更高