随笔分类 -  算法

摘要:前言 递归,是一个非常重要的概念,也是面试中非常喜欢考的。因为它不但能考察一个程序员的算法功底,还能很好的考察对时间空间复杂度的理解和分析。 本文只讲一题,也是几乎所有算法书讲递归的第一题,但力争讲出花来,在这里分享四点不一样的角度,让你有不同的收获。 时空复杂度的详细分析 识别并简化递归过程中的重 阅读全文
posted @ 2020-05-19 15:58 十月围城小童鞋 阅读(231) 评论(0) 推荐(0) 编辑
摘要:在进行算法分析时,语句总的执行次数T(n)是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定T(n)的数量级。算法的时间复杂度,也就是算法的时间量度,基座T(n)=O(f(n))。它表示随问题规模n的增大,算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进算法时间复杂度,简称为时间 阅读全文
posted @ 2018-11-20 20:37 十月围城小童鞋 阅读(326) 评论(0) 推荐(0) 编辑
摘要:1.排序方法 首先能想到的就是先排序,然后取前1000个数,或者部分排序,只排出前1000个数就行 缺点:这些方法的时间复杂度都比较高 2,分治法 可以使用分治法,这有点类似快排中partition的操作,随机选一个数t,然后对整个数组进行partition,会得到两部分,前一部分的数都大于t,后一 阅读全文
posted @ 2018-11-19 10:52 十月围城小童鞋 阅读(2131) 评论(0) 推荐(0) 编辑
摘要:堆排序 堆排序是利用堆这种数据结构而设计的一种排序算法,堆排序是一种选择排序,它的最坏,最好,平均时间复杂度均为O(nlogn),它也是不稳定排序。首先简单了解下堆结构。 堆 堆是具有以下性质的完全二叉树:每个结点的值都大于或等于其左右孩子结点的值,称为大顶堆;或者每个结点的值都小于或等于其左右孩子 阅读全文
posted @ 2018-11-17 17:41 十月围城小童鞋 阅读(310) 评论(0) 推荐(0) 编辑
摘要:LRU 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 实现1 最常见的实现是使用一个链表保存缓存数据,详细算法实现如下: 1. 新数据插入到链表头部; 2. 每当缓存命 阅读全文
posted @ 2018-11-16 16:54 十月围城小童鞋 阅读(353) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示