🧮 写给大家看的算法书
照着《写给大家看的算法书》([日] 杉浦贤 著、绝云 译,电子工业出版社·Broadview,日文原名「図解でかんたんアルゴリズム」)做的自学笔记 —— 这本书只讲一件事:把一件事拆成能照着做的几步。剩下全是它的延伸:步骤要能停、每步不能含糊(第 1 章),步骤要作用在数据上(第 2 章),数据怎么摆决定快慢(第 3 章),于是有了循环、排序、查找(4~6),最后落到电脑里那串 0 和 1(第 8 章)。四部分节奏是「先认、再摆、再算、最后看机器」:认识算法 3 篇 → 数据与结构 13 篇 → 基础·排序·搜索 14 篇 → 其他算法与计算机 7 篇。三句话:算法是做法,不是程序,电脑只贡献速度;快慢不看你跑了几毫秒,看数据变多时它涨得多快;没有更好的结构,只有更配你用途的结构。教材 8 章 82 个二级节另加 7 个专题,按节成篇会碎成八十多篇,所以按主题合成 37 篇、篇号章内顺排。沙箱是 Windows / Python 3.13:37 个 Demo 全部只用标准库、每一个都真跑,输出直接贴进正文;排序比比较次数、查找比查找次数、数据结构比搬运次数——步数换台机器不会变,毫秒会。
内容来自我的 Obsidian 自学笔记 · 全书 8 章 37 篇已全部写完 · 全书完结 🎉
第1章 什么是算法
第2章 变量和数组
数据、类型与值
数据是信息,类型决定它能做什么运算
变量是装值的盒子
变量是贴了名字的盒子,代入就是把值放进去
变量命名与赋值语句
名字要能读懂,赋值是覆盖不是相等
数组与下标
一片连号的盒子,用一个名字加下标取用
什么时候该用数组
同一类数据一多,就该换成数组
二维数组与字符串
二维数组是表格,字符串是字符的数组
常用变量命名
常见的数据配常见的名字,读代码的人省一半…
第3章 数据结构
为什么要学数据结构
数据结构就是数据的摆放方式,摆放决定快慢
堆栈与队列
堆栈后进先出,队列先进先出
链表:单向与双向
链表是拴着绳子的珠子,插入不用搬家
数组、链表与环形缓冲区
数组按下标快,链表按插入快,环形缓冲区省…
树与二叉树
树是有层级的数据,二叉树每个节点最多两个…
图,以及下标从 0 还是 1
图是网状关系,下标从 0 还是 1 是约…
第4章 学习算法基础
循环:算法的基础
循环是算法唯一的重复手段,累加是最小样板
用数组处理大量数据
一个循环加一个数组,就能处理一年的账
最高分、最低分与排名
找最大最小是打擂台,排名要先比再换位
合计与时间差
时间差要按秒算再拆,2038 年是秒数溢…
交换变量与最大公约数
交换要借第三个盒子,最大公约数靠辗转相除
第5章 排序算法
排序是什么
排序就是让数据按某个规则站队
桶排序与选择排序
桶排序用空间换时间,选择排序每次挑一个
冒泡排序与插入排序
冒泡换邻居,插入挪空位,都是 O(n²)
归并排序
归并先分到只剩一个,再两两合回去
希尔排序与快速排序
希尔是分组插入,快速是选基准分两边
第6章 搜索算法
线性搜索与二分搜索
线性搜索一个一个看,二分每次砍一半
哈希表:一次就找到
哈希表用函数算出位置,一次就到位
字符串搜索:朴素、KMP 与 BM
KMP 记住已匹配的前缀,BM 从尾巴往…
数据库里的排序与搜索
数据库的索引是排好序的树,ORDER B…