内容简介 · · · · · ·
本书是数据结构与算法的入门指南,不局限于某种特定语言,略过复杂的数学公式,用通俗易懂的方式针对编程初学者介绍数据结构与算法的基本概念,培养读者编程逻辑。主要内容包括:为什么要了解数据结构与算法,大O表示法及其代码优化利用,栈、队列等的合理使用,等等。
作者简介 · · · · · ·
杰伊•温格罗(Jay Wengrow)
经验丰富的讲师、工程师,一直致力于全民编程教育。编程培训公司Actualize、教育公司Anyone Can Learn To Code的创始人和CEO。
目录 · · · · · ·
第1章 数据结构为何重要 1
1.1 基础数据结构:数组 1
1.1.1 读取 3
1.1.2 查找 5
1.1.3 插入 7
1.1.4 删除 8
1.2 集合:一条规则决定性能 10
1.3 总结 12
第2章 算法为何重要 13
2.1 有序数组 13
2.2 查找有序数组 15
2.3 二分查找 16
2.4 二分查找与线性查找 19
2.5 总结 20
第3章 大O记法 21
3.1 大O:数步数 21
3.2 常数时间与线性时间 22
3.3 同一算法,不同场景 24
3.4 第三种算法 24
3.5 对数 25
3.6 解释O(log N) 26
3.7 实例 27
3.8 总结 28
第4章 运用大O来给代码提速 29
4.1 冒泡排序 29
4.2 冒泡排序实战 30
4.3 冒泡排序的实现 33
4.4 冒泡排序的效率 35
4.5 二次问题 36
4.6 线性解决 38
4.7 总结 39
第5章 用或不用大O来优化代码 40
5.1 选择排序 40
5.2 选择排序实战 41
5.3 选择排序的实现 45
5.4 选择排序的效率 46
5.5 忽略常数 47
5.6 大O的作用 47
5.7 一个实例 48
5.8 总结 49
第6章 乐观地调优 50
6.1 插入排序 50
6.2 插入排序实战 51
6.3 插入排序的实现 55
6.4 插入排序的效率 56
6.5 平均情况 58
6.6 一个实例 60
6.7 总结 61
第7章 查找迅速的散列表 62
7.1 探索散列表 62
7.2 用散列函数来做散列 63
7.3 一个好玩又赚钱的同义词典 64
7.4 处理冲突 65
7.5 找到平衡 68
7.6 一个实例 69
7.7 总结 72
第8章 用栈和队列来构造灵巧的代码 73
8.1 栈 73
8.2 栈实战 75
8.3 队列 79
8.4 队列实战 80
8.5 总结 81
第9章 递归 82
9.1 用递归代替循环 82
9.2 基准情形 83
9.3 阅读递归代码 84
9.4 计算机眼中的递归 86
9.5 递归实战 87
9.6 总结 89
第10章 飞快的递归算法 90
10.1 分区 90
10.2 快速排序 94
10.3 快速排序的效率 98
10.4 最坏情况 101
10.5 快速选择 103
10.6 总结 105
第11章 基于结点的数据结构 106
11.1 链表 106
11.2 实现一个链表 107
11.3 读取 108
11.4 查找 109
11.5 插入 110
11.6 删除 112
11.7 链表实战 114
11.8 双向链表 115
11.9 总结 118
第12章 让一切操作都更快的二叉树 119
12.1 二叉树 119
12.2 查找 121
12.3 插入 124
12.4 删除 126
12.5 二叉树实战 132
12.6 总结 133
第13章 连接万物的图 134
13.1 图 134
13.2 广度优先搜索 136
13.3 图数据库 144
13.4 加权图 146
13.5 Dijkstra算法 148
13.6 总结 154
第14章 对付空间限制 155
14.1 描述空间复杂度的大O记法 155
14.2 时间和空间之间的权衡 157
14.3 写在最后的话 158
· · · · · · (收起)
1.1 基础数据结构:数组 1
1.1.1 读取 3
1.1.2 查找 5
1.1.3 插入 7
1.1.4 删除 8
1.2 集合:一条规则决定性能 10
1.3 总结 12
第2章 算法为何重要 13
2.1 有序数组 13
2.2 查找有序数组 15
2.3 二分查找 16
2.4 二分查找与线性查找 19
2.5 总结 20
第3章 大O记法 21
3.1 大O:数步数 21
3.2 常数时间与线性时间 22
3.3 同一算法,不同场景 24
3.4 第三种算法 24
3.5 对数 25
3.6 解释O(log N) 26
3.7 实例 27
3.8 总结 28
第4章 运用大O来给代码提速 29
4.1 冒泡排序 29
4.2 冒泡排序实战 30
4.3 冒泡排序的实现 33
4.4 冒泡排序的效率 35
4.5 二次问题 36
4.6 线性解决 38
4.7 总结 39
第5章 用或不用大O来优化代码 40
5.1 选择排序 40
5.2 选择排序实战 41
5.3 选择排序的实现 45
5.4 选择排序的效率 46
5.5 忽略常数 47
5.6 大O的作用 47
5.7 一个实例 48
5.8 总结 49
第6章 乐观地调优 50
6.1 插入排序 50
6.2 插入排序实战 51
6.3 插入排序的实现 55
6.4 插入排序的效率 56
6.5 平均情况 58
6.6 一个实例 60
6.7 总结 61
第7章 查找迅速的散列表 62
7.1 探索散列表 62
7.2 用散列函数来做散列 63
7.3 一个好玩又赚钱的同义词典 64
7.4 处理冲突 65
7.5 找到平衡 68
7.6 一个实例 69
7.7 总结 72
第8章 用栈和队列来构造灵巧的代码 73
8.1 栈 73
8.2 栈实战 75
8.3 队列 79
8.4 队列实战 80
8.5 总结 81
第9章 递归 82
9.1 用递归代替循环 82
9.2 基准情形 83
9.3 阅读递归代码 84
9.4 计算机眼中的递归 86
9.5 递归实战 87
9.6 总结 89
第10章 飞快的递归算法 90
10.1 分区 90
10.2 快速排序 94
10.3 快速排序的效率 98
10.4 最坏情况 101
10.5 快速选择 103
10.6 总结 105
第11章 基于结点的数据结构 106
11.1 链表 106
11.2 实现一个链表 107
11.3 读取 108
11.4 查找 109
11.5 插入 110
11.6 删除 112
11.7 链表实战 114
11.8 双向链表 115
11.9 总结 118
第12章 让一切操作都更快的二叉树 119
12.1 二叉树 119
12.2 查找 121
12.3 插入 124
12.4 删除 126
12.5 二叉树实战 132
12.6 总结 133
第13章 连接万物的图 134
13.1 图 134
13.2 广度优先搜索 136
13.3 图数据库 144
13.4 加权图 146
13.5 Dijkstra算法 148
13.6 总结 154
第14章 对付空间限制 155
14.1 描述空间复杂度的大O记法 155
14.2 时间和空间之间的权衡 157
14.3 写在最后的话 158
· · · · · · (收起)
"数据结构与算法图解"试读 · · · · · ·
数据结构与算法并不只是抽象的概念,掌握好的话可以写出更高效、运行得更快的代码,这对于如今盛行的网页和移动应用开发来说尤为重要。如果你最近一次使用算法是在大学课堂上或求职面试时,那你应该还没见识到它的真正威力。 这个主题的大多数资料都有一种通病——晦涩难懂。满纸的数学术语,搞得除非你是数学家,不然真不知道作者在说什么。即使是一些声称“简化”过的书,看起来也好...
· · · · · · (查看全部试读)
原文摘录 · · · · · ·
丛书信息
· · · · · ·
图灵程序设计丛书(共107册),
这套丛书还有
《持续交付》《软件测试》《逆向工程核心原理》《代码之髓》《游戏设计的236个技巧》
等
。
喜欢读"数据结构与算法图解"的人也喜欢 · · · · · ·
- SQL 经典实例 8.0
- 算法详解(卷1)——算法基础 9.1
- NoSQL数据库入门 6.6
- SQL进阶教程 9.0
- Python数据分析 8.8
- 命令行中的数据科学 7.6
- SQL基础教程(第2版) 9.1
- Web性能权威指南 8.9
- Python机器学习实践指南 6.0
- Python数学编程 8.0
数据结构与算法图解的书评 · · · · · · ( 全部 4 条 )
绝佳的数据结构&算法入门书籍
为什么说这本书是绝佳的数据结构&算法的入门书籍,因为它愿意把我当作白痴。 算法导论不说了,一大堆公式和复杂的长句子。我之前入门数据结构主要看的裘宗燕写的<<数据结构与算法 -- Python实现>>,这本书我觉得已经不错了,除了它有些细节跳过不表,让当年新...
(展开)
豆豆的爸爸:一年一本技术好书之《秒懂算法》
大家好,我是豆豆的爸爸 这是一年一本技术好书系列的第一本书:《秒懂算法》 正文内容如下: 吃编程这碗饭是有门槛的,如果不打牢计算机基础,就会在实际开发工作中遇到瓶颈,始终无法突破。而数据结构与算法就是其中之一。 但问题是,很多人搞编程不是对那些经典大部头的砖块...
(展开)
很好的一本数据结构的书
一点都不难!!会一点点任何一个语言,能看懂里面的例程就行了,例程也很简单,翻译也很棒。 总之,是一本很好的专业书籍,给了四颗星,剩下的一颗星是书太薄了。。 我收回之前对工信出版社的偏见,好像不对哦,我的偏见叫中信出版社,是不是不是同一个东西。这本书是图灵程序...
(展开)
算法大O下的数据结构
这篇书评可能有关键情节透露
本书最聪明的是利用大O来把数据库区分开来 首先数据结构分为两类:数组和集合 在把基本属性说清楚了就引入大O算法,通过对不同数据结构进行对比。 以下是简单的笔记: 1数据结构为何重要:影响数据运行的速度 数组: 读取:通过内存地址一步到位 查找:1-n步遍历数组 插入:n步... (展开)> 更多书评 4篇
论坛 · · · · · ·
在这本书的论坛里发言这本书的其他版本 · · · · · · ( 全部4 )
-
Pragmatic Bookshelf (2017)8.3分 17人读过
-
人民邮电出版社 (2022)暂无评分 10人读过
-
Pragmatic Bookshelf (2020)暂无评分 9人读过
以下书单推荐 · · · · · · ( 全部 )
谁读这本书? · · · · · ·
二手市场
· · · · · ·
订阅关于数据结构与算法图解的评论:
feed: rss 2.0
2 有用 Porte Étroite 2020-04-04 10:42:00
简单易读,直击基础知识的要害 one hour. 但远远不够
1 有用 iphyer 2020-02-11 16:55:27
基础书
0 有用 lipsuper 2022-03-14 20:44:50
简单易读,要是里面的语言换成java就更好了。
0 有用 慌不要慌 2022-02-13 23:08:50
大 O 计数法表示最坏的情况,大多数情况面对的都是平均情况,要考虑实际场景。
7 有用 Cievert 2019-07-25 17:48:57
浅显易懂…两天就看完了
0 有用 飞翔的笨蛋 2024-03-02 12:39:21 北京
通俗易懂!很多看似复杂、深奥的事物,其实都是由你所掌握的简单概念构筑而成的。
0 有用 沉默的乳猪 2024-02-26 21:16:29 广东
写得很好,非常适合初学者,而且也只有100多页,非常适合无聊时翻一翻。
0 有用 苏布狸 2024-01-12 20:02:24 北京
通俗易懂,终于有点入门了
0 有用 Tracyliu 2024-01-08 14:54:47 北京
主打一个容易理解
0 有用 却不 2023-12-21 14:41:30 中国香港
建议最好有点代码基础就更有利于阅读本书了。递归中用到了调用栈!如果全书只用一种语言就好了,不过幸好是算法,理解难度不大。 正如书的最后所述,“我希望你能通过本书明白一个道理:很多看似复杂、深奥的事物,其实都是由你所掌握的简单概念构筑而成的。不要因为某些资料没解释到位,就以为它很困难而被吓退,你一定能找到更详尽的解释资料。数据结构和算法博大精深,本书所述仅为皮毛而已。尽管需要学习的东西还有很多,但有... 建议最好有点代码基础就更有利于阅读本书了。递归中用到了调用栈!如果全书只用一种语言就好了,不过幸好是算法,理解难度不大。 正如书的最后所述,“我希望你能通过本书明白一个道理:很多看似复杂、深奥的事物,其实都是由你所掌握的简单概念构筑而成的。不要因为某些资料没解释到位,就以为它很困难而被吓退,你一定能找到更详尽的解释资料。数据结构和算法博大精深,本书所述仅为皮毛而已。尽管需要学习的东西还有很多,但有了目前的基础,你学下去是没问题的。祝你好运!” (展开)