c_cpp 在有序数组中查找元素的位置

Posted

tags:

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

// https://www.geeksforgeeks.org/find-position-element-sorted-array-infinite-numbers/
#include <iostream>
using namespace std;

int binary (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]>x)
            return binary(a,l,m-1,x);
        return binary(a,m+1,r,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 l=0,r=1,k=a[0];
    while (k<x){
        l = r;
        r = 2*r;
        k = a[r];
    }
    int j=binary(a,l,r,x);
    cout<< "Index at "<<j;
}

以上是关于c_cpp 在有序数组中查找元素的位置的主要内容,如果未能解决你的问题,请参考以下文章

使用二分查找向一个有序数组中插入一个数据

用折半查找法找出整型数组中指定元素所在的位置,并输出(折半查找法只能用于有序数列)。

算法练习题力扣练习题——数组: 在有序数组中查找元素存在的范围

二分查找?拿来吧你!

算法 - 二分法查找

二分查找