c_cpp 搜索几乎排序的数组

Posted

tags:

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

// https://www.geeksforgeeks.org/search-almost-sorted-array/
#include<iostream>
using namespace std;

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

int main(){
    int n,x;
    cin>>n;
    int a[n];
    for(int i=0;i<n;i++)
        cin>>a[i];
    cout<< "Enter the search element:";
    cin>>x;

    int j=func(a,0,n-1,x);
    if (j != -1)
        cout<< "Element is present at index: "<<j;
    else
        cout<< "Element is not present.";
}

以上是关于c_cpp 搜索几乎排序的数组的主要内容,如果未能解决你的问题,请参考以下文章

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

c_cpp [bs] [array]搜索范围。给定排序的整数数组,找到给定目标值的起始位置和结束位置。 O(log n)

c_cpp 从两个给定排序数组的备用元素生成所有可能的排序数组

c_cpp 找到最小长度未排序的子阵列,排序使整个数组排序

c_cpp 88.合并排序数组

c_cpp 以波形排序数组