【问题标题】:what is time complexity of given code for searching?给定搜索代码的时间复杂度是多少?
【发布时间】:2019-06-09 15:28:18
【问题描述】:

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

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


#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";
}

【问题讨论】:

  • "#include&lt;bits/stdc++.h&gt; using namespace std;"
  • 顺便说一句,在线评委和代码竞赛不教良好的编码习惯。行业软件工程师会在代码检查中拒绝此代码并让您重写它。很少有商店需要这种代码(如果需要,他们的项目经理很糟糕,项目调度技术也很差)。
  • 重新标记问题

标签: c++ time-complexity


【解决方案1】:

将您的代码更改为

p=m+1;
否则
q=m-1;

当您找到该元素时也终止。复杂度是二分查找的复杂度,log(n)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-01-14
    • 1970-01-01
    • 1970-01-01
    • 2023-02-26
    • 1970-01-01
    相关资源
    最近更新 更多