数据结构与算法
此系列教程已全部更新完毕,需要升级为订阅用户才能阅读所有教程内容,你可以通过加入“学院君和他的朋友们”星球升级为订阅用户:
基础部分
掌握基本部分内容已经可以应付大部分中小互联网公司的PHP面试算法相关问题。
1、前导篇
2、线性表结构
3、排序算法
4、查找算法
- 二分查找
- 二分查找的变形版本(上)
- 二分查找的变形版本(下)
- 二分查找案例剖析:IP地址对应城市查询
- 索引查找(一):稠密索引(数据库索引技术基础)
- 索引查找(二):分块索引(数据库索引技术基础)
- 索引查找(三):倒排索引(搜素引擎技术基础)
5、散列表
- 散列表概述
- 散列函数设计与散列冲突处理
- 哈希算法及其应用(安全加密、唯一标识、数据校验、散列函数、负载均衡、分布式缓存)
- PHP 数组底层实现原理(一):散列表结构及有序性实现
- PHP 数组底层实现原理(二):初始化、插入、哈希冲突处理、查找、删除
6、字符串匹配
- BF算法(最简单、最暴力的匹配算法)
- KMP算法(最知名的匹配算法)
- Trie树算法(多模式匹配算法,适用于构建敏感词过滤系统)
- PHP 字符串匹配函数 strstr 底层实现算法剖析
进阶部分
7、二叉树
- 树及二叉树的概念和特性
- 二叉树的创建和存储(数组、链表)
- 二叉树的遍历(前序、中序、后序)
- 二叉排序(查找)树的定义及实现
- 理想二叉排序树:平衡二叉树(AVL树)的定义和实现
- 理想二叉排序树:平衡二叉树的构建过程演示
- 理性二叉排序树:平衡二叉树的实现代码和算法复杂度
- 工程二叉排序树:红黑树的定义及算法复杂度
- 工程二叉排序树:红黑树的动态平衡实现原理分析
- 二叉树的应用(一):堆和堆的构建
- 二叉树的应用(二):堆排序及其应用(队列优先级、TopK 排行榜)
- 二叉树的应用(三):赫夫曼树及其构建
- 二叉树的应用(四):赫夫曼编码及压缩算法的简单实现
8、图
注:图是数据结构集大成者,掌握了图就等于掌握了数据结构。
- 图的各种概念(无向图、有向图、稀疏图、稠密图、连通图等)
- 图的存储(邻接矩阵、邻接表)
- 图的遍历(上)—— 深度优先搜索
- 图的遍历(下)—— 广度优先搜索
- 最小生成树的定义及应用场景
- 最小生成树的实现算法之普里姆(Prim)算法
- 最小生成树的实现算法之克鲁斯卡尔(Kruskal)算法
- 最短路径及实现算法之迪杰斯特拉(Dijkstra)算法
- 最短路径及实现算法之弗洛伊德(Floyd)算法
- 拓扑排序的定义及其应用场景(AOV网)
- 拓扑排序实现算法及复杂度分析
- 关键路径的定义及其应用场景(AOE网)
- 关键路径实现算法及复杂度分析(拓扑排序解决工程可行性问题,关键路径在此基础上解决工程最短工期问题)
本系列教程已经更新完毕,对于一些更高级的数据结构和算法及使用实例,我们放到后续系列中结合具体场景进行解说,比如数据库查询实现原理、Redis中的数据结构、分布式实现算法等。
你需要加入社群才能学习所有教程:

11 Comments
直接在里面发个动态好了