题目

方法一:暴力解法

var search = function(nums, target) {
  for(let i=0;i<nums.length;i++){
    if(nums[i]===target)return i;
  }
  return -1;
};

方法二:暴力解法

var search = function(nums, target) {
  return nums.indexOf(target);
};

方法三:二分法

var search = function(nums, target) {
  if(nums.length===0)return -1;
  if(nums.length===1){
    return nums[0]===target?0:-1;
  }
  let left = 0;
  let right = nums.length-1;
  while(left<=right){
    let mid = Math.floor((right-left)/2+left);
    let leftTemp = nums[left];
    let rightTemp = nums[right];
    let midTemp = nums[mid];
    if(midTemp===target)return mid;
    if(leftTemp===target)return left;
    if(rightTemp===target)return right;
    if(midTemp>leftTemp){
      //左边有序
      if(target>leftTemp&&target<midTemp){
        right = mid-1;
      }else{
        left = mid+1;
      }
    }else{
      //右边有序
      if(target>midTemp&&target<rightTemp){
        left = mid + 1;
      }else{
        right = mid - 1;
      }
    }
  }
  return -1;
};