数据结构与算法
文章平均质量分 64
程序员的战歌
会删库,但不会跑路。
展开
-
时间复杂度分析
为什么需要复杂度分析?事后统计法把代码跑一遍,通过统计、监控,就能得到算法执行的时间和占用的内存大小。事后统计法的局限性1. 测试结果依赖测试环境2. 测试结果受数据规模影响所以,我们需要一个不用具体的测试数据来测试,就可以粗略地估计算法的执行效率的方法。就是时间复杂度分析法。大O复杂度表示法T(n) = O(f(n))T(n) 表示代码执行的时间n 表示数据规模的大小f(n) 表示每行代码执行的次数总和大 O 时间复杂度实际上并不具体表原创 2021-07-23 16:53:31 · 174 阅读 · 0 评论 -
二分查找算法
二分查找思想每次都通过跟区间的中间元素比较,将待查找的区间缩小为原来的一半,直到找到要查找的元素或区间长度被缩小为 0。例如:从区间1-100中找到22。1-100的中间数是50。先用中间数50与22比较,50>22,那么抛弃区间50-100,剩下区间1-49;再用中间数25与22比较,25>22,那么抛弃区间25-49,剩下区间1-24;再用中间数12与22比较,12<22,那么抛弃区间1-12,剩下区间13-24;再用中间数18与22比较,18<原创 2021-07-29 15:04:43 · 242 阅读 · 0 评论 -
LRU算法
LRU算法是什么和为什么?由于计算机缓存空间是有限的,所以要淘汰缓存中不常用的数据,留下常用的数据,腾出空间给新的数据。LRU是Least recently used的缩写,字面意思是“最近最少使用”,也可理解为“最久未使用”,最久未使用的当然就要被淘汰了。思路一使用有序单链表实现。规定:越靠近链表尾部的结点是越早之前访问的,越靠近链表头部的节点是最近访问的。当有一个新的数据被访问时,我们从链表头开始顺序遍历链表。1. 如果此数据之前已经被缓存在链表中了,我们遍历得到这个数据原创 2021-08-02 17:07:27 · 202 阅读 · 0 评论 -
性能优化实战-逻辑运算and和or优化
逻辑运算and和or优化依据逻辑运算中,and,也就是”与“,代表必须所有条件为真,结果才为真,也可以理解为,只要有一个条件为假,结果就为假。逻辑运算中,or,也就是“或”,代表只要有一个条件为真,结果即为真。利用这两个特性,我们在Python编程中,可以进行时间复杂度优化。如何优化?答案是,将时间复杂度较低的操作,放在逻辑运算符的最左边。原因:只要and表达式第一个结果为假,则后面的操作则略过;只要or表达式第一个结果为真,则后面的操作也略过。来看代原创 2021-09-02 11:47:10 · 873 阅读 · 0 评论