Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/algorithm/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 算法是否具有相同的最佳和最坏情况时间复杂度?_Java_Algorithm_Time_Complexity Theory - Fatal编程技术网

Java 算法是否具有相同的最佳和最坏情况时间复杂度?

Java 算法是否具有相同的最佳和最坏情况时间复杂度?,java,algorithm,time,complexity-theory,Java,Algorithm,Time,Complexity Theory,算法/程序是否可能具有相同的最坏情况和最佳情况时间 例如: public static int factorial(int number) { factorial = 1; for (i = 1; i <= number; i++) factorial = factorial * i; } 公共静态整数阶乘(整数) { 阶乘=1; 对于(i=1;i在您的情况下,“number”是固定的,您的程序没有最坏或最好的情况-它总是进行“number”迭代,因此

算法/程序是否可能具有相同的最坏情况和最佳情况时间

例如:

public static int factorial(int number)
{
    factorial = 1; 
    for (i = 1; i <= number; i++) 
        factorial = factorial * i;
}
公共静态整数阶乘(整数)
{
阶乘=1;
对于(i=1;i在您的情况下,
“number”
是固定的,您的程序没有最坏或最好的情况-它总是进行
“number”
迭代,因此它具有线性复杂度。
有关正式的数学定义,请参见以下文章:

在您的情况下,当
“number”
是固定的时,您的程序没有最坏或最好的情况-它总是进行
“number”
迭代,因此它具有线性复杂度。
有关正式的数学定义,请参见以下文章:


在这种情况下,bast情况的复杂性与最坏情况的复杂性相同=O(n)。
正是因为您指出的原因。无论输入是什么,算法总是执行相同的操作(无if/else)。

在这种情况下,bast情况的复杂性与最坏情况的复杂性相同=O(n)。
正是因为你指出的原因。无论输入是什么,算法总是执行相同的操作(没有if/else)。

当然。大O表示上界,而小O表示某个渐近量的下界(例如算法的时间复杂度)实际上,有一种特殊的表示法,用于给出渐近紧的界(当大o和小o相同时,得到的结果),称为大θ表示法。

当然。大o表示上界,而小o表示某个渐近量的下界(比如一个算法的时间复杂度)。实际上有一种特殊的表示法,用于给出渐近紧的边界(当大o和小o相同时,会得到这种边界),这就是所谓的大θ表示法。

所以我可以假设这是最坏和最好的情况吗?哦……我明白了……我仍然有点对这种表示法感到困惑:)谢谢你的回答!:)我有一个后续问题…在我的问题中…底部部分所以我可以假设这是最坏和最好的情况吗?哦…我明白了…我仍然有点困惑…谢谢回答!:)我有一个后续问题…在我的问题中…底部部分不准确。大O是上界,小O是下界,θ是聚合两者都是n,但这就是定义的范围(用外行的话说)。但是,你可以为最坏情况计算、最佳情况计算等定义θ函数。@Yaneeve:当然!在渐近时间复杂性分析之外的许多情况下(如数论或实分析),也可以使用相同的符号.我把答案编辑得更清楚一点。不准确。大O是上界,小O是下界,θ是两者的总和,但这就是定义(用外行的话说)。但是,你可以为最坏情况计算、最佳情况计算等定义θ函数。@Yaneeve:但当然!在渐近时间复杂度分析(如数论或实数分析)之外的许多情况下,也可以使用相同的符号。我对答案进行了编辑,以使其更加清晰。
public static int factorial(int number)
    {
        factorial = 1;                   // 1
        for (i = 1; i <= number; i++)    // 1+3n
            factorial = factorial * i;   // 2
        return factorial;                // 1
    }