算法是程序员必须要会的东西。不仅仅是工作中需要用到,也是进入大厂的敲门砖
为什么要学算法?
会算法可以使你的代码效率更高,薪水更高。不仅仅是这样,在生活中也可以用到,比如说:女朋友刚买了一件漂亮裙子,让你猜价格。你会怎么猜?我想你一定会这样:100?低了。300? 高了。150?低了,175? 没错~~
其实,这就是应用了最简单的一个算法:二分查找算法。
算法那么多,如何评定一个算法的好坏?
一段辣鸡代码,放到搭载了酷睿i9中的电脑执行的速度可能要比李纳斯写的优秀的代码在酷睿i3的电脑中运行的速度快的多。那你总不能说,那段辣鸡代码的算法比李纳斯写的代码好吧?所以如何在不考虑外界因素的情况下去比较算法的好坏呢?

- 时间复杂度(Time complexity)
不依赖具体的执行环境
不用具体的测试数据
在算法实现前,我们在脑海中就可以评估算法的性能
是一个函数,它定性描述该算法的运行时间。这是一个代表算法输入值的字符串的长度的函数. 时间复杂度常用大O表述,不包括这个函数的低阶项和首项系数。
常见的时间复杂度
- O(1) ->HashMap
- O(logn) -> 二叉树
- O(n) -> for 循环
- O(nlogn) -> for 循环嵌套二叉树
- O(n2) -> for 循环嵌套for 循环
常见的时间复杂度又小到大依次为:
- 空间复杂度(Space Complexity)
是对一个算法在运行过程中临时占用存储空间大小的量度。记做S(n)=O(f(n))
int[] m = new int[n]
for(i=1; i<=n; ++i)
{
print。。。
}
//嵌套代码
int[][] m = new int[n][n]
for(i=1; i<=n; ++i)
{
print。。。
}
常见的空间复杂度又小到大排序依次为:



被折叠的 条评论
为什么被折叠?



