算法笔记:时间空间复杂度

算法

一、时间复杂度
算法笔记:时间空间复杂度
1、平均时间复杂度
也叫加权时间复杂度
// n 表示数组 array 的长度
int find(int[] array, int n, int x) {
int i = 0;
int pos = -1;
for (; i < n; ++i) {
if (array[i] == x) {
pos = i;
break;
}
}
return pos;
}
算法笔记:时间空间复杂度
二、空间复杂度
空间复杂度可以理解为除了原始序列大小的内存,在算法过程中用到的额外的存储空间
1. 可以编写一个算法来计算,这也就意味着,每次给一个年份,都是要通过计算得到是否是闰年的结果。
2. 还有另一个办法就是,事先建立一个有 5555 个元素的数组(年数比现实多就行),然后把所有的年份按下标的数字对应,如果是闰年,此数组项的值就是1,如果不是值为0。这样,所谓的判断某一年是否是闰年,就变成了查找这个数组的某一项的值是多少的问题。此时,我们的运算是最小化了,但是硬盘上或者内存中需要存储这 5555 个 0 和 1 。

这就是典型的使用空间换时间的概念。

当追求一个较好的时间复杂度时,可能会使空间复杂度的性能变差,即可能导致占用较多的存储空间;
反之,求一个较好的空间复杂度时,可能会使时间复杂度的性能变差,即可能导致占用较长的运行时间。

算法复杂度速查表

数据结构操作
算法笔记:时间空间复杂度
数组排序算法
算法笔记:时间空间复杂度
图操作
算法笔记:时间空间复杂度
堆操作
算法笔记:时间空间复杂度
大O复杂度图标
算法笔记:时间空间复杂度