数据结构和算法
本文章目的是收录所有数据结构和算法。
动画算法网站
动画算法一
(传送门) https://visualgo.net/en
动画算法二
(传送门) https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
动画算法三
本人开发,逐步优化,欢迎提修改意见。
(传送门)http://www.donghuasuanfa.com/
概览表
数据结构
线性结构
树状结构
图结构
算法
排序算法
图片来自 维基百科
比较排序
下图为比较排序,比较排序的时间复杂度最优为O(N*log2N) 。
非比较排序
下图为非比较排序,且有些算法突破了O(N*log2N) 。
名称 | 时间复杂度(最差) | 时间复杂度(平均) | 时间复杂度(最优) | 空间复杂度 | 稳定性 | 类别 |
---|---|---|---|---|---|---|
冒泡排序 | O(N2) | O(N2) | O(N) | O(1) | 稳定 | 交换排序 |
鸡尾酒排序 | O(N2) | O(N2) | O(N) | O(1) | 稳定 | 交换排序 |
选择排序 | O(N2) | O(N2) | O(N) | O(1) | 不稳定 | 交换排序 |
插入排序 | O(N2) | O(N2) | O(N) | O(1) | 稳定 | 插入排序 |
希尔排序 | O(N2) | O(N4/3) | O(N) | O(1) | 不稳定 | 交换排序 |
快速排序 | O(N*log2N) | O(N*log2N) | O(N*log2N) | O(log2N) | 不稳定 | 交换排序 |
归并排序 | O(N*log2N) | O(N*log2N) | O(N*log2N) | O(N) | 稳定 | 归并排序 |
堆排序 | O(N*log2N) | O(N*log2N) | O(N*log2N) | O(N) | 稳定 | 选择排序 |
计数排序 | O(N+M) | O(N+M) | O(N+M) | O(N+M) | 稳定 | 线性排序 |
基数排序 | O(K*(N+M)) | O(N+M) | O(N+M) | O(N+M) | 稳定 | 线性排序 |
桶排序 | O(N+M+M*单桶排序时间) | O(N+M+M*单桶排序时间) | O(N+M+M*单桶排序时间) | O(N+M) | 稳定 | 线性排序 |
- 冒泡排序. (文章) (动画演示)
- 鸡尾酒排序. (动画演示)
- 选择排序. (文章) (动画演示)
- 插入排序. (文章)(动画演示)
- 希尔排序. (动画演示)
- 快速排序. (文章)(动画演示)
- 归并排序. (文章) (动画演示)
- 堆排序. (文章) (动画演示)
- 计数排序. (动画演示)
- 基数排序. (动画演示)
- 桶排序. (动画演示)
图算法
图遍历算法
1.广度优先遍历算法(动画演示)(文章)
2.深度优先遍历算法(动画演示)
图最短路径算法
1.Dijkstra(动画演示)
字符串匹配算法
- 朴素算法或者暴力算法
- Rabin-Karp 算法
- 有限自动机算法(Finite Automation)
- Knuth-Morris-Pratt 算法(即 KMP Algorithm)
- Boyer-Moore 算法(文章)
- Simon 算法
- Colussi 算法
- Galil-Giancarlo 算法
- Apostolico-Crochemore 算法
- Horspool 算法
- Sunday 算法
加密安全算法
对称加密
- 对称加密简介
- DES
- 3DES
- AES(文章)
非对称加密
- 非对称加密简介
- RSA
垃圾回收算法
垃圾回收算法与垃圾回收器不能混为一谈。垃圾回收算法被诸多语音使用。常见的垃圾回收算法如下所示:
- 标记清除
- 标记压缩
a. Lisp2算法. Donald E. Knuth
b. Two-Finger算法. Robert A. Saunders
c. 表格算法. B. K. Haddon和W. M. Waite
d. ImmixGC算法 Stephen M. Blackburn和Kathryn S. McKinley - 复制
a.深度优先. Fenichel和Yochelson
b.广度优先. Cheney
c. 近似深度优先搜索法. Paul R. Wilson、Michael S. Lam和Thomas G. Moher - 引用计数算法
过期算法
机器学习
有监督学习
1.全链接神经网络(DNN) (动画演示)
2.卷积神经网络(CNN)
3. 循环神经网络(RNN)
无监督学习
聚类算法
分布式
编程语言,开源框架
JAVA
Redis
- 哨兵模式(动画演示)