
数据结构和算法
最近跟着极客时间的老师学习本课程,本专栏主要是整理的笔记,希望能帮助到大家
爱写Bug的麦洛
与其等待未来,不如创造未来
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构与算法之美
由于最近跟着极客时间的王争老师学习数据结构和算法之美,感触颇深;为了更好巩固知识,才有了这些笔记.<数据结构与算法之美>目录一.原创 2018-12-04 21:09:42 · 6189 阅读 · 1 评论 -
一.初始数据结构和算法
一.什么是数据结构?什么是算法?从广义上来讲,数据结构指一组数据的存储结构;算法指操作数据的一组方法;栗子:图书馆管理会将书籍分类,安装一定的编号存储,这就是"书籍"这种数据的存储结构,那我们如何准确寻找一本书?有很多种方法,你可以一本一本找,你可以根据书的类别找,你可以根据书的编号找,笼统的说,这些查找方法就是算法从狭义来说,是指某些著名的数据结构和算法:队,栈,列,二分查找,动态规划...原创 2018-12-04 21:50:57 · 1271 阅读 · 0 评论 -
二.复杂度分析(上):如何分析、统计算法的执行效率和资源消耗
一.数据结构和算法所要解决的问题数据结构和算法本身解决的是“快”和“省”的问题,即如何让代码运行的更快,让代码更省存储空间;所以执行效率是很重要的一个考量标准.接下来我们要讨论的:时间.空间复杂度分析就可以衡量执行效率,它是整个数据结构和算法学习的精髓.二.为什么需要复杂度分析?1. 测试结果非常依赖测试环境不同硬件的测试环境会对产生不同的测试结果;例如,我们用不同处理器的电脑执行同一...原创 2018-12-06 21:52:24 · 1058 阅读 · 0 评论 -
三.复杂度分析(下):浅析最好、最坏、平均、均摊时间复杂度
今天,我们继续给大家讲解四个复杂度分析方面的知识点,最好情况时间复杂度、最坏情况时间复杂度、平均情况时间复杂度、均摊时间复杂度。一、最好、最坏情况时间复杂度栗子://n表示数组array的长度int find (int[]array,int n,int x){ int i = 0; int pos = -1; for (;i<n;++i) { ...原创 2018-12-20 19:52:11 · 903 阅读 · 0 评论 -
四.浅谈数组的那些事
在大多数编程语言中,数组都是从0开始编号。试问你有没有想过,为什么数组的下标要从0开始编号,而不是1呢?从1开始不是更符合人类的思维逻辑吗?带着这个问题,我们来学习今天的内容。原创 2018-12-20 20:24:01 · 372 阅读 · 0 评论 -
五.链表(上):如何实现LRU缓存淘汰算法
今天我们来学习链表(Linked List)数据结构,为了更好地学习,我们来讨论一个经典的链表应用场景,就是LRU缓存淘汰算法。缓存是一种提高数据读取性能的技术,在软件开发中有着广泛的应用。比如常见的CPU缓存,数据库缓存,浏览器缓存等等。当缓存用满时,决定数据的去留,就会用到缓存淘汰策略来决定.常见的策略有三种:先进先出策略FIFO(First In,First Out),最少使用策略(L...原创 2019-01-31 21:40:51 · 713 阅读 · 0 评论 -
六.链表(下):如何轻松写出正确的链表代码
一.理解指针和引用的含义我们知道,有些语言有指针的概念,比如c语言。有些语言没有指针,取而代之为“引用”,比如java,Python。实际上,它们的意思都是存储所指对象的内存地址。接下来,我们用指针来讲解,也可以将它理解为引用。其实对于指针的理解,我们只需要记住下面这句话就行了:将某个变量赋值给指针,实际上就是将这个变量的地址赋值给指针,或者反过来说,指针中存储了这个变量的内存地址,指向了这...原创 2019-01-31 22:55:26 · 492 阅读 · 0 评论 -
七.栈:如何实现浏览器的前进和后退
提到浏览器的前进、后退功能,大家都很熟悉。假如当你依次访问完一串页面a-b-c之后,点击浏览器的后退按钮,就可以查看之前浏览的页面b和a,当你后退到a,点击前进按钮,就可以重新看到页面b和c。但是,如果你后退到b后,点击了新的页面d,那就无法再通过前进、后退功能查看页面c了。那么如何实现这个功能?这就要说道我们今天要学习的“栈”。一.如何理解栈关于“栈”,我有一个非常贴切的例子,就是一摞叠...原创 2019-03-07 22:16:02 · 1495 阅读 · 0 评论