给定代码进行搜索的时间复杂度是多少?

时间:2019-06-09 15:28:18

标签: c++ time-complexity

这段代码的时间复杂度是多少?

我尝试使用二进制搜索解决此问题,但无法以这种方式解决,请帮助查找此代码的复杂性。


#include<bits/stdc++.h>
using namespace std;
int main()
{
    int n;
    cin>>n;
    int a[n];

    for(int i=0;i<n;i++)
    cin>>a[i];
        int x;
    cin>>x;
    int p=-1;
    int q=n;
    while(p+1<q)
    {
        int m=(p+q)/2;
        if(a[m]<x)
        p=m;
        else
        q=m;
    }
    cout<<"j";
}

1 个答案:

答案 0 :(得分:0)

将代码更改为

p = m + 1;
其他
q = m-1;

找到元素后也终止。复杂度是二进制搜索log(n)。