iOS算法题想法读书

算法复杂度

2021-06-16  本文已影响0人  测试账号

在IT的世界,有两个特殊的单位,一个叫时间复杂度,另一个空间复杂度,这两个单位是对算法设计好坏的衡量标准。即都是越小越好。

空间复杂度

空间复杂度一般是比较好掌握,就是你申请的内存大小决定了你的空间复杂度,如果内存固定,那空间复杂度就是O(1),如果直接申请n块内存,空间复杂度就是O(n)

时间复杂度

时间复杂度一般是根据具体需求来进行算法实现的,所以比较多样性一点,同时也存在着很大的优化空间。常见的时间复杂度一般有以下几种:

常数阶O(1)

当算法中不涉及变量n,仅有常数就可以完成的,一般时间复杂度为O(1);

线性阶O(n)

当算法中出现了循环执行的函数,且循环次数仅为n次,算法中也未出现递增数的乘法,这时候时间复杂度为O(n);

对数阶O(logN)

当算法中出现循环执行的函数,且循环次数为n次,算法中也出现了递增数和常数的阶乘,这时候时间复杂度为O(logN);

线性对数阶O(nlogN)

当算法中出现了循环函数的嵌套,且外函数循环次数为n次,内循环为对数阶循环的时候,这时候时间复杂度为O(nlogN);

平方阶O(n²)

当算法中出现了嵌套循环函数,而且内外循环次数都是n的时候,这时候时间复杂度为O(n²)

立方阶O(n³)、K次方阶O(n^k)、指数阶(2^n)

参考上面的O(n²) 去理解就好了,O(n³)相当于三层n循环,其它的类似。

常见的算法时间复杂度由小到大依次为:Ο(1)<Ο(logn)<Ο(n)<Ο(nlogn)<O(n²)<O(n³)<…<Ο(2^n)<Ο(n!)

上一篇 下一篇

猜你喜欢

热点阅读