This is a Data Structure and Algorithm learning repo implements by Java/Python
Data Structure | Code | Document |
---|---|---|
数组 | Array.java | 1.动态数组 |
栈 | ArrayStack.java | 2.栈 |
栈 | LinkedListStack.java | 4.链表 |
队列 | ArrayQueue.java | 3.队列 |
队列 | LoopQueue.java | 3.队列 |
队列 | LinkedListQueue.java | 4.链表 |
链表 | LinkedList.java | 4.链表 |
二分搜索树 | BST.java | 5.二分搜索树 |
集合 | LinkedListSet.java | 6.集合与映射 |
集合 | BSTSet.java | 6.集合与映射 |
映射 | LinkedListMap.java | 6.集合与映射 |
映射 | BSTMap.java | 6.集合与映射 |
堆 | MaxHeap.java | 7.优先队列与堆 |
优先队列 | PriorityQueue.java | 7.优先队列与堆 |
跳表 | SkipList.java | 8.跳表 |
线段树 | SegmentTree.java | 9.线段树 |
线段树 | SegmentTree2.java | 9.线段树 |
哈夫曼树 | HuffmanTree.java | 10.哈夫曼树 |
[拓展]使用哈夫曼编码实现文件压缩与解压 | Demo | 10.哈夫曼树 |
前缀树 | Trie.java | 11.前缀树 |
并查集 | [缺] | [缺] |
AVL | AVLTree.java | 13. AVL 树 |
红黑树 | RBTree.java | 14. 红黑树 |
Chapter | Code | Document |
---|---|---|
003-二进制和位运算 | Code | 003-二进制和位运算 |
004-选择、冒泡、插入排序 | Code | 004-选择、冒泡、插入排序 |
009-单双链表及其反转 | Code | 009-单双链表及其反转 |
010-合并两个有序链表 | Code | 010-合并两个有序链表 |
011-两个链表相加 | Code | 011-两个链表相加 |
012-划分链表 | Code | 012-划分链表 |
013-队列和栈 | Code | 013-队列和栈 |
014-栈和队列相互实现 | Code | 014-栈和队列相互实现 |
015-最小栈 | Code | 015-最小栈 |
016-双端队列的实现 | Code | 016-双端队列的实现 |
Chapter | Code | Document |
---|---|---|
算法复杂度 | [无代码] | 1.算法复杂度 |
线性查找法 | LinearSearch.java | 2.线性查找法 |
排序算法——选择排序 | SelectionSort.java | 排序算法 |
排序算法——冒泡排序 | BubbleSort.java | 排序算法 |
排序算法——插入排序 | InsertionSort.java | 排序算法 |
排序算法——归并排序 | MergeSort.java | 排序算法 |
排序算法——快速排序 | QuickSort.java | 排序算法 |
排序算法——堆排序 | HeapSort.java | 排序算法 |
快速幂 | [无代码] | 快速幂 |