作为课程作业的一部分,我需要计算程序的复杂性。我想计算下面程序的空间复杂度和时间复杂度。我如何计算它? 如果有人可以详细解释它,对我来说真的很有帮助。
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;
}
答案 0 :(得分:0)
空间复杂性:识别“大量”或“重复”发生的数据。为这些数量分配数字,例如,N =文件中的行数,或M =数组中的元素数。添加这些数量。注意数据结构的动态创建:如果你有一个N个数字的数组和M个数字中的另一个,你创建了一个包含所有产品的表格,那么表格的空间复杂度就是...
时间复杂性:识别重复的操作。有些可能是隐藏的(如在Perl中),有些是明确的,例如在for循环中。使用空间复杂度的结果来量化这些重复。循环可以提前终止:然后您必须估计平均执行时间。循环发生一个接一个加起来。如果你知道一个循环体被执行N次并且这个体包含一个执行M次的内部循环,那么该内部循环的主体会被执行 - 多久一次?
很多时候,这只是一个简单的计算,簿记和简单算术练习,尽管有几个例子可以说一个好的答案需要大量的数学。
不是你的情况!