You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
dev-protocol/base/algorithm/Data-Structure & Algorithm.md

108 lines
1.9 KiB
Markdown

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 算法 和 数据结构
## 线性查找法
## 排序基础
## 数据结构基础:动态数组,栈和队列
## 动态数据结构基础:链表
## 归并排序法
## 快速排序法
## 二分查找法
## 二分搜索树
## 堆,优先队列和堆排序
## 冒泡排序,希尔排序和排序算法大总结
## 线段树Trie 和并查集
###
## AVL 树和红黑树
## 哈希表和 SQRT 分解
## 非比较排序
## 模式匹配
## 随机算法,外存算法和更多
## 实战
### 前缀树 - 字典树 Trie 的应用
- Web框架中如何实现路由匹配
#### 路由匹配
- 一个好用的 Web 框架,要能尽可能快地解析请求 URL 并映射到不同 API 的处理逻辑,也就是我们常说的“路由匹配”。
#### 动态路由
- 如何保存路由和处理方法的对应关系呢?
- 不采用 HashMap 来存储路由表,因为利用哈希表存储的路由和处理逻辑的关系,只能用来索引静态路由,也就是路由中没有动态参数的路由,比如
/user/enabletime.xxx.org/hybrid/pvip ,这样的路由,路径是明确的,一个路由只有一种可能性
- 动态路由如何实现呢?方式有很多种,可以用正则表达式匹配来实现,另一种更常用的方式就是我们要重点学习的 Trie 树。
#### Trie 树总结
- Trie 树,也称为前缀树或者字典树,是一种常用的维护字符串集合的数据结构
- 能用来做 排序、保存、查询 字符串
- 常用场景比如搜索引擎关键词匹配、路由匹配、词频统计和字符串排序等
- EMQ X 也有用到相关的数据结构来实现 MQTT 协议路由表
- Trie 树主要的特点和优势都建立基于前缀的树状存储方式上
- 相比于 treemap 来说trie 树存储的开销要小得多,并且因为它天然的前缀匹配和排序的特性,在很多时候也能帮助我们更快检索数据。
#### 前缀树实现