计算函数的空间复杂度和时间复杂度

时间:2014-07-08 14:18:40

标签: algorithm time-complexity space-complexity

作为课程作业的一部分,我需要计算程序的复杂性。我想计算下面程序的空间复杂度和时间复杂度。我如何计算它? 如果有人可以详细解释它,对我来说真的很有帮助。

sub find_multi_string {
    my ($file, @strings) = @_; 
    my $fh;
    open ($fh, "<$file");
    #store the whole file in an array
    my @array = <$fh>;

    for my $string (@strings) {
        if (grep /$string/, @array) {
            next;
        } else {
            die "Cannot find $string in $file";
        }   
    }   

    return 1;
}

1 个答案:

答案 0 :(得分:0)

空间复杂性:识别“大量”或“重复”发生的数据。为这些数量分配数字,例如,N =文件中的行数,或M =数组中的元素数。添加这些数量。注意数据结构的动态创建:如果你有一个N个数字的数组和M个数字中的另一个,你创建了一个包含所有产品的表格,那么表格的空间复杂度就是...

时间复杂性:识别重复的操作。有些可能是隐藏的(如在Perl中),有些是明确的,例如在for循环中。使用空间复杂度的结果来量化这些重复。循环可以提前终止:然后您必须估计平均执行时间。循环发生一个接一个加起来。如果你知道一个循环体被执行N次并且这个体包含一个执行M次的内部循环,那么该内部循环的主体会被执行 - 多久一次?

很多时候,这只是一个简单的计算,簿记和简单算术练习,尽管有几个例子可以说一个好的答案需要大量的数学。

不是你的情况!