企业网站推广方法实验报告,九江市区,七牛云 wordpress,云南省植保植检站网址目录#xff1a; 一.包装类 二.时间复杂度 三.空间复杂度 一.包装类#xff1a; 在Java中#xff0c;由于基本类型不是继承自Object#xff0c;为了在泛型代码中可以支持基本类型#xff0c;Java 给每个基本类型都对应了一个包装类型。 1 基本数据类型和对应的包装类 一.包装类 二.时间复杂度 三.空间复杂度 一.包装类 在Java中由于基本类型不是继承自Object为了在泛型代码中可以支持基本类型Java 给每个基本类型都对应了一个包装类型。 1 基本数据类型和对应的包装类 注除了 Integer 和 Character 其余基本类型的包装类都是首字母大写 2.装箱和拆箱装箱和 拆 箱有 自动拆装箱 和 手动拆装箱 也就是隐式和显示具体如下 public class Test {public static void main(String[] args) {/*** 装箱*/int a 2;a Integer.valueOf(a);//手动 or 显示装箱Integer b 1;//(自动)隐式装箱实则调用了Integer.valueOf方法System.out.println(a);System.out.println(b);// Integer c 10;/*** 拆箱*//*int a c.intValue(); //手动拆箱System.out.println(a);int d c;System.out.println(d);//自动拆箱*/}
} 自动拆装箱可以用反汇编查看out目录指令javap -c其实也是调用了手动拆装箱的方法。 补充 算法效率分析分为两种第一种是时间效率第二种是空间效率 。 时间效率被称为时间复杂度而空间效率被称作 空间复杂度 。 时间复杂度主要衡量的是一个算法的运行速度而空间复杂度主要衡量一个算法所需要的额外空间 在计算机发展的早期计算机的存储容量很小。所以对空间复杂度很是在乎。但是经过计算机行业的迅速发展计 算机的存储容量已经达到了很高的程度。所以我们如今已经不需要再特别关注一个算法的空间复杂度 二.时间复杂度
1.算法的时间复杂度是一个数学函数算法中的基本操作的执行次数为算法的时间复杂度 2.大O的渐进表示法我们表示时间复杂度哈空间复杂度都是通过这个公式。实际中我们计算时间复杂度时我们其实并不一定要计算精确的执行次数 1用常数1取代运行时间中的所有加法常数。 2在修改后的运行次数函数中只保留最高阶项。 3如果最高阶项存在且不是1则去除与这个项目相乘的常数。得到的结果就是大O阶 3.例子这里第一个循环执行了2n次第二个循环执行了10次共2n10根据大O渐进法时间复杂度为On。
void func2(int N) {
int count 0;
for (int k 0; k 2 * N ; k) {
count;
}
int M 10;
while ((M--) 0) {
count;
}
System.out.println(count);
} 计算时间复杂度要根据具体算法代码来考量。比如下面的二分查找
这个是按照一半一半来查找设找了X次找到一个数字。格式为2^1/1 , 2^2/1........一直到
2^x/1 (1)找到的数字。Xlog2,所以时间复杂度就是为log2
int binarySearch(int[] array, int value) {
int begin 0;
int end array.length - 1;
while (begin end) {
int mid begin ((end-begin) / 2);
if (array[mid] value)
begin mid 1;
else if (array[mid] value)
end mid - 1;
else
return mid;
}
return -1;
} 三.空间复杂度 1.空间复杂度是对一个算法在运行过程中临时占用存储空间大小的量度 。空间复杂度不是程序占用了多少bytes的空间因为这个也没太大意义所以空间复杂度算的是变量的个数。空间复杂度计算规则基本跟时间复杂度类似也使用大O渐进表示法 下面这个冒泡排序一般为O1 使用了常数个额外空间i,end所以空间复杂度为 O(1) void bubbleSort(int[] array) {
for (int end array.length; end 0; end--) {
boolean sorted true;
for (int i 1; i end; i) {
if (array[i - 1] array[i]) {
Swap(array, i - 1, i);
sorted false;
}
}
if (sorted true) {
break;
} 这里有一题典型的例子求下面空间复杂度 public static int[][] get2Array(int n){int[][] array new int[n][];for(int i 0; i n; i) {array[i] new int[n-i];n--;}return array;
} 这里应该是刚开始有N个空间然后有每次开辟比之前少的一块空间。 空间总的个数为123...N-1 N N (1N)*N/2 N N^2/2 3N/2
这里空间复杂度就为ON^2