所以我写了一些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),因为每个文件被访问一次。

08-17 09:23
查看更多