精华内容
下载资源
问答
  • Java代码的时间复杂度

    千次阅读 2018-09-19 22:27:36
    Java代码的时间复杂度 四个场景,分别对应了程序中最常见四种执行方式: 场景1 T(n) = 3n,执行次数是线性 场景2: T(n) = 5logn,执行次数是对数 场景3: T(n) = 2,执行次数是常量 场景4: T...

    Java中代码的时间复杂度

    四个场景,分别对应了程序中最常见的四种执行方式:

    场景1

    T(n) = 3n,执行次数是线性的
    在这里插入图片描述

    场景2:

    T(n) = 5logn,执行次数是对数的
    在这里插入图片描述

    场景3:

    T(n) = 2,执行次数是常量的
    在这里插入图片描述

    场景4:

    T(n) = 0.5n^2 + 0.5n,执行次数是一个多项式
    在这里插入图片描述
    有了基本操作执行次数的函数 T(n),是否就可以分析和比较一段代码的运行时间了呢?还是有一定的困难。

    比如算法A的相对时间是T(n)= 100n,算法B的相对时间是T(n)= 5n^2,这两个到底谁的运行时间更长一些?这就要看n的取值了。

    所以,这时候有了渐进时间复杂度(asymptotic time complectiy)的概念,官方的定义如下:

    若存在函数 f(n),使得当n趋近于无穷大时,T(n)/ f(n)的极限值为不等于零的常数,则称 f(n)是T(n)的同数量级函数。

    记作 T(n)= O(f(n)),称O(f(n)) 为算法的渐进时间复杂度,简称时间复杂度。

    渐进时间复杂度用大写O来表示,所以也被称为大O表示法。

    如何推导出时间复杂度呢?有如下几个原则:

    如果运行时间是常数量级,用常数1表示。

    只保留时间函数中的最高阶项

    如果最高阶项存在,则省去最高阶项前面的系数。

    让我们回头看看刚才的四个场景。
    场景1:

    T(n) = 3n

    最高阶项为3n,省去系数3,转化的时间复杂度为:

    T(n) = O(n)

    场景2:

    T(n) = 5logn

    最高阶项为5logn,省去系数5,转化的时间复杂度为:

    T(n) = O(logn)
    场景3:

    T(n) = 2

    只有常数量级,转化的时间复杂度为:

    T(n) = O(1)
    场景4:

    T(n) = 0.5n^2 + 0.5n

    最高阶项为0.5n^2,省去系数0.5,转化的时间复杂度为:

    T(n) = O(n^2)

    我们来举过一个例子:

    算法A的相对时间规模是T(n)= 100n,时间复杂度是O(n)

    算法B的相对时间规模是T(n)= 5n2,时间复杂度是O(n2),

    算法A运行在小灰家里的老旧电脑上,算法B运行在某台超级计算机上,运行速度是老旧电脑的100倍。

    那么,随着输入规模 n 的增长,两种算法谁运行更快呢?

    在这里插入图片描述
    从表格中可以看出,当n的值很小的时候,算法A的运行用时要远大于算法B;当n的值达到1000左右,算法A和算法B的运行时间已经接近;当n的值越来越大,达到十万、百万时,算法A的优势开始显现,算法B则越来越慢,差距越来越明显。

    这就是不同时间复杂度带来的差距。

    展开全文
  • 输出日期和时间的Java代码-java.util.Date用法 文章目录输出日期和时间的Java代码-java.util.Date用法System.out.println(new java.util.Date());代码图结果System.out.println(new java.util.Date()....

    输出日期和时间的Java代码-java.util.Date用法




    System.out.println(new java.util.Date());

    代码

    System.out.println(new java.util.Date());  
    

    image

    结果

    Wed Oct 17 21:06:51 CST 2018
    



    System.out.println(new java.util.Date().toLocaleString());

    代码

    System.out.println(new java.util.Date().toLocaleString());
    

    image

    会有提示(但是不用管)
    img

    结果

    2018-10-17 21:06:32
    


    前两个的区别可以看出来吧,第一个的输出结果多了很多英文,有时候不必要的话就可以换成第二个。

    前两个已过时,接下来介绍第三个。




    DateFormat.format()【重要】

    代码

    public class Xx1 {
    	public static void main(String[] args) {
    		// TODO 自动生成的方法存根
    	//日期
    	    //方法1
    			DateFormat d1 =java.text.DateFormat.getDateInstance();
    			Date date = new Date();  
    			System.out.println(d1.format(date));
    		//方法2
    		    DateFormat df = DateFormat.getDateInstance();
    //		    Date date = new Date();  
    //注释掉这一行,如果单独的话取消注释,因为局部变量重复了。
    			System.out.println("日期:" + df.format(date));  
    	//时间
    			DateFormat tf = DateFormat.getTimeInstance(); 
    //		    Date date = new Date(); 
    			System.out.println("时间:" + tf.format(date));  
    
    	//日期时间
    		//方法1
    			DateFormat dtf = DateFormat.getDateTimeInstance(); 			
    //		    Date date = new Date();
    			System.out.println("日期时间:" + dtf.format(date));  
    		//方法2
    			SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateTimeInstance();  
    //		    Date date = new Date();
    			System.out.println("日期时间:" + sdf.format(date));  
    
    	}
    }
    

    提示:源代码下载请看文末1


    image

    结果

    2018-10-18
    日期:2018-10-18
    时间:20:57:01
    日期时间:2018-10-18 20:57:01
    日期时间:2018-10-18 20:57:01
    



    注意

    从基础学起的注意一下

    import java.text.DateFormat;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    

    这三行要注意检查一下。(需要导入类


    步骤(只以一个为例,剩下的都一样):

    1. 输入SimpleDateFormat sdf = (SimpleDateFormat) DateFormat.getDateTimeInstance();
      出现报错图标后点击:
      图标
    2. 然后双击出现的第一行,
      也就是出现java.text的提示的那一行。
      点击图标
    3. import java.text.SimpleDateFormat;会在上方【public class的上方、package的下方】出现。



    给个建议

    每个方法都试一遍,更有助于理解。

    可以先注释掉不运行的代码,然后尝试运行,查看运行结果。


    //end


    【赞赏&支持&福利】

    赞赏  │  支持&福利(+每日领红包)  │  备用链

    其他说明可以点击 简 介 说 明 查看。
    转载请注明原文章链接,并标注作者amosC。

    转载格式如下:

    来源:(此处附上原文链接)

    作者:amosC(amoscey


    简书主页   | CSDN主页  | 赞赏说明  | 简    介   |



    1. 源代码(备注:用TXT文件保存的,直接复制着用就行)【点击此处下载】 ↩︎

    展开全文
  • Java统计代码执行时间

    千次阅读 2018-05-03 15:28:40
    通常在进行代码测试和代码优化的时候,会想要知道代码执行时每段代码的执行时间,以便进行代码优化和调整。下面封装的类是利用代码段标记和执行时间差进行统计。使用时,仅需要在代码段中... * 在需要进行统计的代码...

    通常在进行代码测试和代码优化的时候,会想要知道代码执行时每段代码的执行时间,以便进行代码优化和调整。

    下面封装的类是利用代码段标记和执行时间差进行统计。使用时,仅需要在代码段中加入CodeTimer.set("标记");就可以了,打印 时调用CodeTimer.print();统计字段有代码段、总时间(纳秒)、执行次数、平均时间。

    封装类:

    /**
     * 统计代码段执行时间。
     * 在需要进行统计的代码段调用CodeTimer.set()方法进行标记。
     * 打印时调用CodeTimer.print()方法
     */
    public class CodeTimer {
        private static String lastMark = "start";
        private static long lastTime = System.nanoTime();
        private static final Map<String, Long> timeMap = new LinkedHashMap<String, Long>();
        private static final Map<String, Long> timeHappenCount = new LinkedHashMap<String, Long>();
    
        public static void set(int mark) {
            set("" + mark);
        };
    
        public static void set(String mark) {
            long thisTime = System.nanoTime();
            String key = "[" + lastMark + "]->[" + mark + "]";
            Long lastSummary = timeMap.get(key);
            if (lastSummary == null)
                lastSummary = 0L;
    
            timeMap.put(key, System.nanoTime() - lastTime + lastSummary);
            Long lastCount = timeHappenCount.get(key);
            if (lastCount == null)
                lastCount = 0L;
    
            timeHappenCount.put(key, ++lastCount);
            lastTime = thisTime;
            lastMark = mark;
        };
    
        public static void print() {
            Integer a = 0;
            System.out.println(
                    String.format("%25s %18s %18s %18s",
                        "PROCESS", "TOTAL_TIME", "REPEAT_TIMES", "AVG_TIME"));
            for (Entry<String, Long> entry : timeMap.entrySet()) {
                System.out.println(
                    String.format("%25s %18s %18s %18s", entry.getKey(),
                        String.format("%,d", entry.getValue()), timeHappenCount.get(entry.getKey()),
                        String.format("%,d", entry.getValue() / timeHappenCount.get(entry.getKey()))));
            }
        }
    }

    打印出的效果形如:

                      PROCESS         TOTAL_TIME       REPEAT_TIMES           AVG_TIME
                 [start]->[0]            152,312                  1            152,312
                     [0]->[4]         12,223,365                  1         12,223,365
                    [4]->[10]            101,838                  6             16,973
                    [10]->[8]          1,246,189                 34             36,652
                     [8]->[5]        489,096,299                 34         14,385,185
                     [5]->[6]        122,247,497                 34          3,595,514
                     [6]->[7]      2,686,057,029                 34         79,001,677
                     [7]->[1]             22,334                  1             22,334
                     [1]->[9]            911,191                  1            911,191
    




    展开全文
  • mysql语句为select timestampdiff(hour,departtime,arriveltime) from flight where flightNo = 'CZ6412'; 我想获取时间差,但是我没有这个字段,该如何获取?(java里面,hibernate注解创建表)
  • java计算代码执行时间

    千次阅读 2018-06-20 14:28:14
    java计算代码执行时间: long startMili=System.currentTimeMillis();...//这里加入需要测试的代码 long endMili=System.currentTimeMillis();//结束时间 System.out.println("/**结束...

    java计算代码执行时间:

    
    long startMili=System.currentTimeMillis();// 当前时间对应的毫秒数
    System.out.println("/**开始 "+startMili);
    //这里加入需要测试的代码
    long endMili=System.currentTimeMillis();//结束时间
    System.out.println("/**结束 s"+endMili);
    System.out.println("/**总耗时为:"+(endMili-startMili)+"毫秒");
    
    第二种是以纳秒为单位计算的。
    
    long startTime=System.nanoTime();   //获取开始时间  
    
    doSomeThing(); //测试的代码段  
    
    long endTime=System.nanoTime(); //获取结束时间  
    
    System.out.println("程序运行时间: "+(endTime-startTime)+"ns"); 
    
    展开全文
  • 以毫秒为单位计算 //伪代码 long startTime=System.... //测试的代码段 long endTime=System.currentTimeMillis(); //获取结束时间 System.out.println("程序运行时间: "+(endTime-startTi...
  • Java编写获取当前时间的代码

    千次阅读 2018-09-04 08:38:37
    import java.util.*; import java.text.SimpleDateFormat;//导入文本包中简单日期格式类型 public class J090201 { public static void main(String[] args) { SimpleDateFormat sdf=new SimpleDateFormat(&...
  • java中获取当前时间的代码

    万次阅读 2016-12-09 23:49:18
    获取当前时间的毫秒值 class Demo{ public static void main(String[] args) throws ParseException { //获取当前时间到毫秒值 Date d = new Date(); System.out.println("当前时间为:" + d); //创建日期格式化...
  • JAVA 测试程序代码运行时间

    万次阅读 多人点赞 2009-05-19 14:58:00
    突然想准确的测试一下Java代码的执行时间,在网上找了一会。发现基本有以下两种方法:第一种是以毫秒为单位计算的。Java代码 //伪代码 long startTime=System.... //测试的代码段 long endTime=System.currentTime
  • java测试代码段执行时间

    千次阅读 2016-04-20 15:23:00
    因为遇到效率问题,要看看具体是哪段代码...//这里放需要测试执行时间的代码段。 System.out.println("\r 执行耗时 : "+(System.currentTimeMillis()-a)/1000f+" 秒 "); 然后就可以在打log的地方看到对应执行时间
  • #java代码遍历文件目录下文件,获取文件创建时间和修改时间 ##例如文件目录为:D:/test 文件夹下包含有这5个文件: ##具体java代码如下(jsa.java): import java.nio.file.Files; import java.nio.file....
  • // 时间格式  SimpleDateFormat df = new ... // 现在的时间  Date now = new Date();  // 计算某一月份最大天数  Calendar cal = Calendar.getInstance();  // Date转化为Calendar  cal.setTim...
  • 使用工具 https://github.com/LinShunKang/MyPerf4J 直接下载 ... 下载后解压 执行命令 java -javaagent:MyPerf4J-ASM-2.10.0-SNAPSHOT.jar -DMyPerf4JPropFile=MyPerf4J.propert...
  • Java中几种输出当前时间的代码

    万次阅读 多人点赞 2018-08-03 20:15:53
    第一种: ①:import java.util.Date; public class MakeTime{ public static void main(String[] args) { Date date=new Date(); //这个地方需要导包,如上... System.out.println(“现在的时间是:”+da...
  • //自己看了一些视频,察觉了一些问题 现在来说明:Java中静态代码块 动态代码块加载时间 // 像JVM传递参数-verbose:class 我们可以看到classload加载class顺序 ①证明证明Java是动态加载类 ②动态块,静态块...
  • java中如何测试一段代码的运行时间

    万次阅读 2018-07-01 10:14:00
    java中如何测试一段代码的运行时间 一、以毫秒为单位。long startTime = System.currentTimeMillis();... //测试的代码段 long endTime = System.currentTimeMillis(); //获取结束时间 System...
  • 记录java代码运行时间

    千次阅读 2018-03-19 15:58:45
    long startTime = System.currentTimeMillis(); //do something long endTime = System.currentTimeMillis(); System.out.println("程序运行时间:"...将要记录运行时间的代码放在中间,即可。...
  • java获取当前日期时间代码

    千次阅读 2016-08-04 16:49:47
    1、获取当前时间,和某个时间进行比较。...获取当前时间的代码如下 代码如下   Date date = new Date(); date.getTime() ;  还有一种方式,使用 System.currentTimeMillis() ;  
  • Java代码插入记录时间与保存到MYSQL数据库后的时间不一致,时间相差8小时,例如: Java代码里插入的时间为:2019-03-12 14:57:53 数据库里面显示的时间为:2019-03-12 06:57:53 2.原因 JDBC连接时设置了...
  • Java代码获取美国洛杉矶的时间

    千次阅读 2019-01-16 15:38:09
    TimeZone time1 = TimeZone.getTimeZone("America/Los_Angeles"); Date today1 = Calendar.getInstance(time1,Locale.US).getTime(); DateFormat df1 = DateFormat.getDateTimeInstance();...
  • Java的代码点与代码单元概念

    千次阅读 2017-05-16 22:36:20
    除此之外,还有采用两个字节表示字符编码方式,为了能表示世界上所有符号,JAVA采用16位(两个字节)Unicode编码char类型表示世界上所有字符,设计之初,这65535个编码完全可以表示所有字符,还有一部分...
  • 突然想用idea分析每个程序执行消耗的时间和内存,但是网上搜了一下好像也没明确说明要怎么办,看了几篇类似帖子,自己造了一个java单例类,定义了start和end方法来分析两个方法之间代码的执行。 代码如下: ...
  • 每隔一秒输出当前时间的java代码

    千次阅读 2018-06-28 14:46:06
    import java.text.SimpleDateFormat;import java.util.Date;public class DisplayTime { public static void main(String[] args) { Thread thread = new Thread(){ public void run(){ SimpleDateFormat sdf ...
  • java代码获取系统时间

    千次阅读 2012-05-25 13:35:51
    方法一:用java.util.Date类来实现,并结合java.text.DateFormat类来实现时间的格式化,看下面代码: import java.util.*; import java.text.*; //以下默认时间日期显示方式都是汉语语言方式 //一般语言就默认...
  • 测试Java代码的执行时间

    千次阅读 2006-03-23 22:53:00
    使用以下简短代码即可测试,但是精确度不是很高,有的几微秒的就测试不... //测试的代码段,通常可以将主要算法封装在这里long end=System.currentTimeMillis(); //获取运行结束时间System.out.println("程序运行时间
  • 60 行代码写一个简单可用的并且带过期时间的内存缓存 在一个小项目中需要特别简单的使用一个缓存。如果要引入 ehcache 等其他第三方缓存还需要增加 各种 jar 甚至需要增加配置文件。特别麻烦。 所以就自己写了一个...
  • 之前用MATLAB实现过ARMA算法,用于时间序列的预测,但是Java代码好像很少,应该去哪儿找相关的代码?谁有实现过相关算法?

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 45,823
精华内容 18,329
关键字:

java时间的代码

java 订阅