首页 > 其他 > 详细

时间和空间复杂度

时间:2021-04-01 18:53:23      阅读:11      评论:0      收藏:0      [点我收藏+]

什么是时间复杂度

算法(algorithm)是指用来操作数据、解决程序问题的一组方法。
技术分享图片
拿一个经典例子来体会下:
技术分享图片
分别用递归方式和循环方式来实现这个方法(看起来虽然递归更简洁,但并不能看出效率高低)。可以根据运行时间看出效率高低,有兴趣可以多比较几组数据,那样能得出更精确的结论。

package com.lantian3.learn.learn.algorithm;

public class  Sample{
    public static void main(String[] args) {
        int n = 7;
        System.out.println("1" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
        long number1 = getNumber(n);
        System.out.println("2" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
        long number2 = forGetNumber(n);
        System.out.println("3" + new SimpleDateFormat("yyyyMMddHHmmssSSS").format(new Date()));
        System.out.println(number1);
        System.out.println(number2);
    }

    private static long getNumber(long n) {
        if (n <= 1) {
            return n;
        } else {
            return getNumber(n-1)+getNumber(n-2);
        }
    }

    private static long forGetNumber(long n) {
        if (n <= 1) {
            return n;
        }
        int first = 0;
        int second = 1;
        for (int i = 0; i < n-1 ; i++) {
            int sum = first + second;
            first = second;
            second = sum;
        }
        return second;
    }
}

我测试的结果是递归的效率随着数字的增大,效率逐渐降低,且远远低于循环方式。这时候,我们可以说递归方式的时间复杂度要比循环方式高,此时,显然循环方式效率更高。

时间和空间复杂度

原文:https://www.cnblogs.com/phplantian/p/14606588.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!