java - 代码复杂度分析

标签 java time complexity-theory space analysis

所以我编写了一些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/

相关文章:

language-agnostic - 如何解释 “naive implementation”是什么?

runtime - 该伪代码的下限运行时

java - 为什么这有效? JNDI、Tomcat6

java - 序列化和反序列化嵌套类

java - 为什么java类的构造函数在android上不起作用?

MYSQL时间戳转换

java - 使用 EJB 的 XML 实现

php - 这是什么格式的时间戳?

PHP time() 改变小时和秒而不是分钟?

big-o - 递归函数的渐近复杂度是如何推导的