算法、数据结构可视化
一、总结
一句话总结:
比如算法,数据结构,很多都有可视化,学习要知道用可视化更好的学习
1. 可视化数据结构:http://www.cs.usfca.edu/~galles/visualization/Algorithms.html
2. C++实现的各种算法演示:http://people.cs.pitt.edu/~kirk/cs1501/animations/
3. 很酷的各种排序演示:http://sorting.at/
4. 很有创意的排序比较(匈牙利 Sapientia 大学的 6 种排序算法舞蹈视频):http://top.jobbole.com/1539/
二、内容在总结中
1. 可视化数据结构:http://www.cs.usfca.edu/~galles/visualization/Algorithms.html
2. C++实现的各种算法演示:http://people.cs.pitt.edu/~kirk/cs1501/animations/
3. 很酷的各种排序演示:http://sorting.at/
4. 很有创意的排序比较(匈牙利 Sapientia 大学的 6 种排序算法舞蹈视频):http://top.jobbole.com/1539/
三、不错的可视化算法示例(转)
转自:不错的可视化算法示例
https://blog.csdn.net/huanglong8/article/details/55188649
不错的可视化算法示例
在逛IT论坛时,有发现一些介绍算法的可视化示例站点,觉的真心不错,不光是排序,包括图数,甚至有的关于GIS分析的,所以,也save一下,难免以后会用到,多多学习,多多分享。
先介绍一个比较全面的可视化算法站点,这里包括算法的简要思想逻辑,虽然不是纯C代码,但一样有用。
https://visualgo.net/
这个算法站点包含诸多内容,诸多的变体,还是很值得学习的。
其中包括:
- Sorting 排序算法。有很多方式枚举)
- Bitmask 位掩码。学习网络的话,可以看看。
- Linked List 链表。包括增删改等等。
- Hash Table 哈希表。觉得快速查找存储会有帮助。
- Binary Heap 二叉堆。同样为了遍历快速的一种方式。
- Binary Search Tree 二叉搜索树。这个我学过。
- Graph Structures 图结构。
- Union-Find DS 并查集。
- Segment Tree 线段树。
- Fenwick Tree 树状数组。
- Recursion Tree/DAG 递归树…。
- Graph Traversal 图的遍历
- Min Spanning Tree 最小生成树
- SS Shortest Paths 最短路径
- Network Flow 网络流
- Graph Matching 图形匹配
- Cycle Finding 环查找
- Suffix Tree 后缀树
- Suffix Array 后缀数组
- Geometry (Polygon) 图形多边形
- Convex Hull 凸包
这个站点后续还在更新。
https://www.toptal.com/developers/sorting-algorithms
这个也是,不过类型风格不太喜欢,不过也很有帮助,主要是一堆排序算法,包括各种C , JAVA, PYTHON的源代码。
https://www.cs.usfca.edu/~galles/visualization/Algorithms.html
相当霸气的站点,有用户参数,可随意自定义随机函数。
目前,我们有以下数据结构和算法的可视化:
- 基本
- 堆栈:数组实现
- 堆栈:链表实现
- 队列:数组实现
- 队列:链表实现
- 列表:数组实现(可在java版本中使用)
- 列表:链接列表实现(在java版本中可用)
- 递归
- 阶乘
- 反转字符串
- N皇后问题
- 索引
- 二进制和线性搜索(排序列表)
- 二进制搜索树
- AVL树(平衡二叉搜索树)
- 红黑树
- 张开树
- 打开哈希表(闭合寻址)
- 闭合哈希表(开放寻址)
- Closed哈希表,使用桶
- Trie(前缀树,26-ary树)
- 基树(紧凑型)
- 三元搜索树(Trie with BST of children)
- B树
- B +树
- 排序
- 比较排序
- 气泡排序
- 选择排序
- 插入排序
- 壳牌排序
- 合并排序
- Quck排序
- 桶排序
- 计数排序
- 基数排序
- 堆排序
- 比较排序
- 堆状数据结构
- 堆
- 二项式队列
- 斐波纳契堆
- 左派堆
- 倾斜堆
- 图算法
- 广度优先搜索
- 深度优先搜索
- 连接组件
- Dijkstra的最短路径
- Prim的最低成本生成树
- 拓扑排序(使用Indegree数组)
- 拓扑排序(使用DFS)
- Floyd-Warshall(所有对最短路径)
- Kruskal最小成本生成树算法
- 动态编程
- 计算第n个斐波纳契数
- 改变
- 最长公共子序列
- 几何算法
- 2D旋转和比例矩阵
- 2D旋转和平移矩阵
- 2D更改坐标系
- 3D旋转和缩放矩阵
- 3D改变坐标系
- 其他 …
- 不相交集
- Huffman编码(在java版本中可用)
http://sorting.at/
这个也是主要讲排序的,看的挺黑科技的。。。
https://illustrated-algorithms.now.sh/
这个站点的可视化很少,应该是才开始做,目前只有二分,快排,BFS的,可视化比较卡哇伊一点。。。
http://people.cs.pitt.edu/~kirk/cs1501/animations/
这个站点貌似挺慢的,运行了一个说需要java环境,大家可以自己研究下。
https://bost.ocks.org/mike/algorithms/
这是一个个人博客,里面着重讲算法(采样,随机乱序,排序,迷宫)的意义及优劣点,逐步深入,作者讲的很细,对这方面的有需求的朋友,一定要读读这篇文章,帮助很大。
此人博客也关注下,我也是从hacker news上翻到的。
如果哪位朋友有更好的可以留言,大家一同分享。