Program to fnd Time Complexity of a java program [closed]

夙愿已清 提交于 2019-12-24 19:22:09

问题


I've been trying to write a simple program in java to find time complexity of a program.A program whih just searches for "for" loop or "while" loop and prints the no of iteration such as O(n) or O(2n) etc.

I got the i/p program in textarea.Is there any way by which i could do the opertaion?

Please any one help me.


回答1:


This is not full proof, but would work for you

import java.util.StringTokenizer;



public class Complexity {
    public static void main(String[] args) {

        String input = "for(i=0;i<10;i++)\n{\nfor(i=0;i<10;i++)\n{\nfor(i=0;i<10;i++)\n{\n}\n}\n}\nfor(i=0;i<10;i++)\n{\n}\nfor(i=0;i<10;i++)\n{\nfor(i=0;i<10;i++)\n{\n}\n}";
        int open_bracket=0;
        StringTokenizer t = new StringTokenizer(input);
        String result = "";

        String token="";
        int current = 0;

        System.out.println("CODE \n"+input);

        while(t.hasMoreTokens())
        {

            token = t.nextToken();

            if(token.equals("{")) open_bracket++;

            if(token.equals("}")) open_bracket--;

            if(token.length()>=3) if(token.substring(0, 3).equals("for"))  current++;

            if(open_bracket==0&&token.equals("}"))
            {
                result += " n^"+current+" +";
                current = 0;
            }
        }

        if(result.length()>0) result = result.substring(0, result.length()-1);

        result = "O( "+result+")";

        System.out.println("RESULT = "+result);

    }
}

OUTPUT

CODE    

for(i=0;i<10;i++)
{
for(i=0;i<10;i++)
{
for(i=0;i<10;i++)
{
}
}
}
for(i=0;i<10;i++)
{
}
for(i=0;i<10;i++)
{
for(i=0;i<10;i++)
{
}
}

RESULT = O(  n^3 + n^1 + n^2 )


来源:https://stackoverflow.com/questions/19617468/program-to-fnd-time-complexity-of-a-java-program

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!