专栏推荐:Java入门知识
内容推荐:巧用抽象类与接口,打造高效Java程序(下)
今日诗词:昨夜星辰昨夜风,画楼西畔桂堂东
⛳️点赞 ☀️收藏⭐️关注卑微小博主
⛳️点赞 ☀️收藏⭐️关注卑微小博主
目录
思维导图
一. 时间复杂度
(1). 一般程序时间复杂度
(2). 递归时间复杂度
(3). 大O的渐近表示法
(4). 时间复杂度三种情况
(5).空间复杂度
二. 包装类
(1). 装箱
(2). 拆箱
结语+美图分享
概念: 程序算法粗略执行的次数
常数级别:算法的执行时间和常数规模无关, 也就是说输入的数据数量、大小如何,
算法的执行时间都保持不变
例如
// 请计算一下func1基本操作执行了多少次? void func1(int N){ int count = 0; for (int i = 0; i < N ; i++) { for (int j = 0; j < N ; j++) { count++; } } for (int k = 0; k < 2 * N ; k++) { count++; } int M = 10; while ((M--) > 0) { count++; } System.out.println(count); }
递归时间复杂度计算
递归时间复杂度 = 递归次数 * 每次递归后执行的次数
举例解释
// 计算阶乘递归factorial的时间复杂度? long factorial(int N) { return N < 2 ? N : factorial(N-1) * N; }
大O的渐近表示法
三要素: 1. 用数字一取代常数项
2. 取最高阶项
3. 除去最高项的系数
例如上题
最好情况: 输入数据, 算法最小运行时间
平均情况: 所有输入, 算法平均运行时间
最坏情况: 输入数据, 算法最大运行时间
举例解释:
比如猜数字(1-10): 我们最好情况一次就猜中, 最坏就第十次猜中, 平均就第5-6左右猜中
我们一般取最坏情况作为算法的时间复杂度,如果最坏情况下都比其他算法效率高
那么这个算法就是一个优秀的算法
大O的渐近表示法经典练习题: 《大O的渐近表示法经典题目》
概念: 算法临时占用空间的量度
一般也使用大O的渐近法表示
注意: 空间复杂度不是占用多少字节, 他只是描述占用空间的量度
举例
作用: 将基本数据类型封装成对象
基本数据类型的包装类
概念: 把基本数据类型放到包装类型中
显示装箱: 手动调用valueOf方法装箱
自动装箱: 编译器自动调用valueOf装箱
概念: 将包装类型放到基本数据类型中
显示拆箱: 手动调用编译器Value方法拆箱
自动拆箱: 编译器自动调用Value方法拆箱
我们知道了装箱拆箱的概念,那么我们来看一看下面的代码
public class test { //下列代码输出什么,为什么? public static void main(String[] args) { Integer a = 127; Integer b = 127; Integer c = 128; Integer d = 128; System.out.println(a == b); System.out.println(c == d); } }
✨谢谢你的阅读和耐心!祝愿你在编程的道路上取得更多的成功与喜悦!"✨
⭐️点赞收藏加关注,学习知识不迷路⭐️
✔️✔️✔️✔️
⛳️点赞☀️收藏⭐️关注
⛳️点赞☀️收藏⭐️关注
⛳️点赞☀️收藏⭐️关注
♂️♂️♂️♂️♂️♂️♂️♂️♂️♂️♂️♂️♂️