java时间复杂度(附带简单算法分析)

内存模型(三令五申):

        栈(stack):存基本数据类型;例:int i = 9;

        堆(heap):存引用数据类型;例:int score = new int[]{1,2,3,4,5};

public static void main(String[] args) {
    int a[] = new int[]{1,2,3,4,5};
    System.out.println(a);
     a = new int[]{1,2,3,4};
    System.out.println(a);
    //如果数组new int[]{1,2,3,4,5}不被指向,会自动销毁。
}

程序 = 数据结构 + 算法

数据结构:数据如何存储。

计算机算法:是用计算机解决某个问题的方法,步骤。

如何衡量算法的优劣

解题四件套

1.审题

2.找出所有解(找出解决问题的所有方法),找出最优解

        时间(速度),空间(占用内存);

3.编码

4.测试

时间复杂度

时间复杂度:是一个函数,反映的是数据规模发生变化时,算法执行时间的趋势变化;

时间复杂度的作用:衡量算法优劣的函数;

大o表示法下常见的时间复杂度:n表示的是数据规模;

O(1):常数复杂度

O(log n):对数复杂度,多在二分法中出现;

O(n):线性复杂度,多在一次循环出现;

O(nlongn):多在快速排序,归并排序中出现;

O(n方):多在双层循环中出现;

O(n立方):多在三层循环出现;

O(2的n次方):易崩溃;

O(n!):易崩溃;

注意:多在......中出现,说明拥有该结构的程序,一定是其对应的时间复杂度。

例:出现单次循环,时间复杂度为O(n);

时间复杂度(大O表示法)的推导

1.如果时间复杂度是一个常数,则统一记作O(1);

2.如果不是O(1),则去掉常数;例:计算得O(2n)记作O(n);

3.一个复杂的函数表达式中,只保留最高阶;例:O(n方+2N)记作O(n方);

java如何输出程序运行时间

long start = System.currentTimeMillis();
long end = System.currentTimeMillis();
System.out.println(end-start);

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值