对于一个问题的算法来说,之所以称之为算法,首先它必须能够解决这个问题(称为准确性)。其次,通过这个算法编写的程序要求在任何
情况下不能崩溃(称为健壮性)。
如果准确性和健壮性都满足,接下来,就要考虑最重要的一点:通过算法编写的程序,运行的效率怎么样。
#充分利用已有信息
使用某种数据结构
优先级队列 使用的两种场景:
-
想要根据Map的value值对Map进行排序
-
想要对某几个元素的集合进行排序,此时可以针对这几个元素定义一个类class
#双指针遍历
#空间换时间
算法的时间复杂度和空间复杂度是可以相互转化的。
谷歌浏览器相比于其他的浏览器,运行速度要快。是因为它占用了更多的内存空间,以空间换取了时间。
#数据预处理
#二分查找
几个简单的判定方法:
1.常数级是O(1):就是不管n多大,始终是一个常数;
比如说执行一条语句,a+b;
2.通常循环是O(n)(一层);(因为执行n次常数级操作)
嵌套通常情况是O(n^m);
3.采用二分策略可以降到log2(n);
#数学推理
微信公众号“计算机基础学”关注我哟