• 循环有序数组中查找指定值


    定义:循环有序数组是指可以通过循环移位成为有序数组。
    特点:(1)可以被分为两个完全有序的数组。
               (2)中分之后,至少有一部分是有序的。
    ---a[mid]>=a[low]----低位有序------
    如果目标值位于低位,就对低位进行二分查找;否则对高位再进行中分。
    1 2 3 4 5(升序的循环)
    2 3 4 5 1
    3 4 5 1 2

    ---a[mid]<a[low]----高位有序-------
    如果目标值位于高位,就对高位进行二分查找;否则对高位再进行中分。
    4 5 1 2 3
    5 1 2 3 4

    int Search(int a[], int low, int high,int value){
    
        while(low<=high){
            int mid = (low+high)/2;
            if(a[mid]==value){
                return mid;
            }
            
            if(a[mid]>=a[low]){ //低位有序
                if(a[low]<=value && value<=a[mid]){
                    high = mid-1;
                }else{
                    low = mid+1;
                }
            
            }else{//a[mid]<a[low],高位有序
                if(a[mid]=<value && value<=a[high]){
                    low = mid+1;
                
                }else{
                    high = mid-1;
                }
            }
        }
        return -1;
    }
  • 相关阅读:
    MySQL(错误1064)
    如何判断是手机还是电脑访问网站
    Oracle表分区
    分离Date数据
    多对多
    一对多
    SQLalchemy基础
    paramiko上传下载
    paramiko
    automap
  • 原文地址:https://www.cnblogs.com/shijianchuzhenzhi/p/14880535.html
Copyright © 2020-2023  润新知