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