这段代码正确的大0是什么?
What is the correct Big O of this code
我正在学习大0符号,我对这段c++代码有点困惑:
void enterElements(int *s1, int s1Size)
{
for(int x = 0;x < s1Size;++x)
{
retry:
cout<<"Element "<<x + 1<<": ";
cin>>s1[x];
int valid = validation();
if(valid == 1)
{
cout<<"The input must be numbers."<<endl;
goto retry;
}
}
}
因为我不知道如何做好,所以我得到了3个结果:
- 9n + 1 -> 0 (n)
- 7nm + 2m + 2n + 1 -> 0 (nm)
- 7n^2 + 4n + 1 -> 0 (n^2)
有正确的吗?如果不是,你能帮我找到正确的答案吗?
int validation()
{
int validation = 0;
if(cin.fail())
{
validation = 1;
cin.clear();
cin.ignore(std::numeric_limits<std::streamsize>::max(),'n');
}
else
validation = 0;
return validation;
}
Big-Oh符号在这里确实不太适用。您所拥有的只是一个下界,绝对不能保证验证(),因此唯一的Big-Oh指定将是O(inf),但这非常没有帮助。
您的代码(如果所有验证都正确)将是:
Ω(s1Size)
因为它将被执行s1Size
次,而不是更少。大哦符号不适用于下界。因为我们不能保证goto
语句将被使用多少次,因此没有上界,因此没有适用的Big-Oh推导。
您的运行时,简单来说:大于或等于s1Size迭代(除非出现导致循环退出的错误)。
因此,最好的情况是上述情况,而最坏的情况是永远!
EDIT: Ω在这里是正确的,而不是Ω,因为Ω意味着运行时大于或等于s1Size
如果它可以接受用户输入,那么它可以是0 (n)到无穷大(以及更大)之间的任何值
最糟糕的情况:永远不会结束(没有人告诉你如何验证一个东西)
最佳条件:0 (n)(如果你知道如何验证)
相关文章:
- 这段代码"seperature | | i"是什么意思?
- 这个(const vector<vector<int> > &A)"代码段是什么意思?
- 在这段 python 代码中,大于符号是什么意思
- 这段代码的输出是什么,它在构造函数中使用 strcpy?
- 这段代码的作用是什么?
- 这段代码的 Big-O 表示法是什么
- C++向量,这段代码是什么意思
- 这两段代码的函数定义是什么
- 这段代码有什么问题?如果变量是字母,我无法测试名为数字的变量
- 这段代码到OpenCV Java的翻译是什么?
- c中的fork()命令——这段简单代码的输出是什么
- 此 C++ 代码段的语法是什么?
- 这段c++代码片段在c#中的等价语法是什么?
- 这段c++代码的含义是什么?
- 这段代码的输出是什么?
- 这段c++代码是做什么的
- 这段代码正确的大0是什么?
- 这段c++代码是什么意思?
- 在c++中这段代码是什么意思
- 这段特定的c++代码是什么意思?