这次给大家推荐一个在线的可视化工具,它可以交互式地演示各种数据结构和算法。
网站地址:https://www.cs.usfca.edu/~galles/visualization/about.html
我们只需要一个浏览器,就可以通过实际操作的方式理解复杂的数据结构和算法。打开该网站之后,可以看到一个介绍页面。
该页面介绍了一些使用方法,我们可以点击页面左侧的“Algorithms”按钮查看所有可以演示的数据结构和算法。
以下是一个 B+树的数据结构演示:
目前该网站实现的数据结构和算法包括:
基本结构(Basics)
栈:数组实现(Stack: Array Implementation)
栈:链表实现(Stack: Linked List Implementation)
队列:数组实现(Queues:Array Implementation)
队列:链表实现(Queues: Linked List Implementation)
递归算法(Recursion)
递归阶乘(Factorial)
字符串递归反转(Reversing a String)
N-皇后问题(N-Queens Problem)
索引(Indexing)
排序列表的二分查找和线性查找(Binary and Linear Search (of sorted list))
二分搜索树(Binary Search Trees)
自平衡二叉查找树(AVL Trees (Balanced binary search trees))
红黑树(Red-Black Trees)
伸展树(Splay Trees)
拉链法哈希表(Open Hash Tables (Closed Addressing))
开地址法哈希表(Closed Hash Tables (Open Addressing))
基于桶的开地址法哈希表(Closed Hash Tables, using buckets)
前缀树(Trie (Prefix Tree, 26-ary Tree))
基数树(Radix Tree (Compact Trie))
三分查找树(Ternary Search Tree (Trie with BST of children))
B-树(B Trees)
B+树(B+ Trees)
排序算法(Sorting)
冒泡排序(Bubble Sort)
选择排序(Selection Sort)
插入排序(Insertion Sort)
希尔排序(Shell Sort)
归并排序(Merge Sort)
快速排序(Quick Sort)
比较排序(Comparison Sorting)
桶排序(Bucket Sort)
计数排序(Counting Sort)
基数排序(Radix Sort)
堆排序(Heap Sort)
堆类数据结构(Heap-like Data Structures)
堆(Heaps)
二项队列(Binomial Queues)
斐波那契堆(Fibonacci Heaps)
左倾堆(Leftist Heaps)
倾斜堆(Skew Heaps)
图算法(Graph Algorithms)
广度优先搜索(Breadth-First Search)
深度优先搜索(Depth-First Search)
连通分量(Connected Components)
Dijkstra 最短路径(Dijkstra’s Shortest Path)
Prim 最小生成树(Prim’s Minimum Cost Spanning Tree)
基于入度数组的拓扑排序(Topological Sort (Using Indegree array))
基于深度优先的拓扑排序(Topological Sort (Using DFS))
Floyd-Warshall 全源最短路径(Floyd-Warshall (all pairs shortest paths))
Kruskal 最小生成树(Kruskal Minimum Cost Spanning Tree Algorithm)
动态规划(Dynamic Programming)
斐波那契数列(Calculating nth Fibonacci number)
完全背包问题(Making Change)
最长公共子序列(Longest Common Subsequence)
几何算法(Geometric Algorithms)
二维旋转和缩放矩阵(2D Rotation and Scale Matrices)
二维旋转和平移矩阵(2D Rotation and Translation Matrices)
二维坐标空间变更(2D Changing Coordinate Systems)
三维旋转和缩放矩阵(3D Rotation and Scale Matrices)
三维旋转和平移矩阵(3D Changing Coordinate Systems)
其他(Others …)
不相交集(Disjoint Sets)
霍夫曼编码(Java实现)