zoukankan      html  css  js  c++  java
  • LeetCode:33. Search in Rotated Sorted Array

    在类似有序序列7,8,9,0,1,2,3,4中查找一个给定的数,没有重复数字

    1,顺序查找

    2,二分查找

      类似序列的特点是由一个最大数分成了两个有序序列,例如例子中是9把原序列分成了7,8,9和0,1,2,3,4,而二分查找的特点是数列必须有序,而且中间值特别重要

    这里用到了分类讨论,总共有两层分类,

      第一层分类是中间值是左侧大数列的,还是右侧小数列的

      第二层分类是所查数字是在左侧还是右侧

      这里主要是分类思想的应用,尤为重要,分类的标准是中间值是偏向大数列还是小数列,偏向这两个字尤为值得思考

      所写代码如下:

    class Solution {
    public:
        int search(vector<int>& nums, int target) {
            int low,high;
            int media;
                
            low = 0;
            high = nums.size() - 1;
           
            
            while(low <= high){
                
                
                media = (high+low) / 2;
    
                if(nums[media] == target)
                    return media;
    
                
               if(nums[media] < nums[high])
        			if(nums[media] < target && target <= nums[high])
        				low = media + 1;
        			else
        				high = media - 1;
    	       else
        			if(nums[low] <= target && target < nums[media])
        				high = media - 1;
        			else 
        				low = media + 1;
                
    
            }
            
            return -1;
        }
    };
    

    3,多次二分查找

      链接博客地址:http://www.cnblogs.com/ganganloveu/p/4148554.html

  • 相关阅读:
    网络运维架构
    Q in Q
    光纤/光模块的多模和单模
    Cisco VTP
    Cisco NTP配置
    惠普/aruba交换机
    【转】交换机背板带宽
    接入交换机下所有服务器不定时丢包
    windows 2012安装不了KB2919355
    Cisco交换机密码策略设置
  • 原文地址:https://www.cnblogs.com/jackes/p/5311139.html
Copyright © 2011-2022 走看看