所以我编写了一些Java代码来列出今天修改的目录及其子目录中的文件。我需要一些帮助来理解时间和空间复杂性。
代码:
public class 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),因为每个文件都会被访问一次。
关于java - 代码复杂度分析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27618548/