时间复杂度和空间复杂度简单介绍

目录

大O的渐进表示法:

时间复杂度计算:

空间复杂度:


衡量算法的好与坏

平常所说的复杂度都是算法最坏情况下的

大O的渐进表示法:

1  用1代替加法常数

2  运行次数不断扩大后,只保留阶数最高项

3 将最高阶项的系数改为1

时间复杂度计算:

算法的与运行时间和语句执行次数成正相关;

主要关注函数中循环的次数

例子:1

时间复杂度和空间复杂度简单介绍_第1张图片

第一个循环运行了 n^2,第二个循环运行了 2n 第三个循环运行了  10,sum=n^2 + 2n + 10; 经过处理后这个函数的时间复杂度为O(n^2)

2

时间复杂度和空间复杂度简单介绍_第2张图片

时间复杂度为O(n)

3

时间复杂度和空间复杂度简单介绍_第3张图片

时间复杂度:O(M+N)

4

时间复杂度和空间复杂度简单介绍_第4张图片

复杂度:O(1);因为可以看出这个循环共进行了100次,加法常数要变为1,所以为O(1)

5

时间复杂度和空间复杂度简单介绍_第5张图片

这个冒泡排序,第一次执行了n-1次,第二次执行了n-2次,第三次执行力n-3次,直到执行1次,是个等差数列求和,最终结果为:O(n^2);

等差前n项和公式:

或者首项加尾项乘以项数除以二;

6

时间复杂度和空间复杂度简单介绍_第6张图片

二分查找,当有4个数的时候需要进行两次循环,8个数需要进行三次循环,16个数需要进行四次循环,即假设需要循环次数为x,我们可以发现等量关系,个数除以2^x等于1,解出x,为log以2为底n为指。(n是指数据个数)

7

时间复杂度和空间复杂度简单介绍_第7张图片

O(N);

8

时间复杂度和空间复杂度简单介绍_第8张图片

类似这样:

时间复杂度和空间复杂度简单介绍_第9张图片

我们认为N=5的时候有五层,那么循环次数就是2^0+2^1+....+2^(n-1);(最后一层不满2^(n-1))粗略就算即可,这个是个等比数列,最终结果为:2^n

等比数列求和公式:

空间复杂度:

主要计算原数组申请变量空间的个数,其他的局部变量均为常数可以看作1

例子1:

时间复杂度和空间复杂度简单介绍_第10张图片

一直在对原数组进行操作所以空间复杂度为O(1)

2

时间复杂度和空间复杂度简单介绍_第11张图片

动态开辟了n+1个空间,所以空间复杂度为O(n)

3

每次递归都要在栈上开辟空间,因此递归的空间复杂度还取决于递归的次数,这题空间复杂度为O(n)

你可能感兴趣的:(数据结构与算法,算法,数据结构,java)