c_cpp 搜索已排序和旋转的数组中的元素

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c_cpp 搜索已排序和旋转的数组中的元素相关的知识,希望对你有一定的参考价值。

#include <iostream>
using namespace std;

int binary(int a[],int l,int r,int k){
    if(r>=l){
        int m=l+(r-l)/2;
        if (a[m]==k)
            return m;
        if (a[m]>k)
            return binary(a,l,m-1,k);
        return binary(a,m+1,r,k);
    }
    return -1;
}

int main(){
    int n;
    cout<<"Enter the no.of elements:";
    cin>>n;
    int a[n],t=-1;
    cout<<"Enter the array elements:";
    for(int i=0;i<n;i++){
        cin>>a[i];
        if(t==-1&&i>0&&a[i]<a[i-1])
            t=i;
    }

    int k;
    cout<<"Enter the search element:";
    cin>>k;

    if (a[0]<=k && k<=a[t-1]){
        int p=binary(a,0,t-1,k);
        if (p!= -1)
            cout<<"Index is:"<<p;
        else
            cout<<"Not found";
    }
    if (a[t]<=k  && k<=a[n-1]){
        int p = binary(a,t,n-1,k);
        if (p!= -1)
            cout<<"Index is:"<<p;
        else
            cout<<"Not found";
    }

    return 0;
}

以上是关于c_cpp 搜索已排序和旋转的数组中的元素的主要内容,如果未能解决你的问题,请参考以下文章

在主题二分搜索下的 InterviewBit 问题中,在 C++ 中的旋转排序数组中搜索超过了时间限制

LeetCode 81.搜索旋转排序数组 II

c_cpp 递增排序的数组(元素不重复),旋转一定长度后,求数组中最小的数。如{1,2,3,4,5,6},旋转后{4,5,6,1,2, 3},旋转后的数组最小值为1

#yyds干货盘点# LeetCode程序员面试金典:搜索旋转数组

62. 搜索旋转排序数组

Lintcode_62.搜索旋转排序数组