所以我写了一些Java代码来列出目录及其子目录中的文件,这些文件今天已经被修改了。我需要一点帮助来了解时间和空间的复杂性。
编码:
公共类FileInDir {
File[] files = null;
Date d = new Date();
long mill;
public void listTodayFiles(String path) {
File dir = new File(path);
files = dir.listFiles();
for(File file : files){
mill = file.lastModified();
Date f = new Date(mill);
if(f.getDate() == d.getDate()){
if(file.isFile())
System.out.println("FILE: " + file.getName() + " WAS LAST MODIFIED ON: " + f);
else if(file.isDirectory())
listTodayFiles(file.getAbsolutePath());
}
}
}
}
因此,据我了解,将所有文件存储到数组中需要O(n)时间,循环需要O(n)时间。我不确定递归调用的复杂性。我也不确定if语句是否在时间或空间复杂度中起作用。空间复杂度也将是O(n),因为它需要存储每个元素(文件)。
感谢:D
最佳答案
您的复杂程度取决于您为n选择的内容。如果n是文件数,则复杂度为O(n),因为每个文件被访问一次。