linked-list-typed 1.47.3 → 1.47.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +410 -353
- package/dist/data-structures/hash/hash-map.d.ts +3 -3
- package/dist/data-structures/hash/hash-map.js +10 -4
- package/dist/data-structures/hash/hash-table.d.ts +9 -4
- package/dist/data-structures/hash/hash-table.js +50 -5
- package/dist/data-structures/heap/heap.d.ts +6 -1
- package/dist/data-structures/heap/heap.js +51 -9
- package/dist/data-structures/linked-list/doubly-linked-list.d.ts +56 -56
- package/dist/data-structures/linked-list/doubly-linked-list.js +117 -119
- package/dist/data-structures/linked-list/singly-linked-list.d.ts +36 -36
- package/dist/data-structures/linked-list/singly-linked-list.js +58 -60
- package/dist/data-structures/queue/deque.d.ts +49 -49
- package/dist/data-structures/queue/deque.js +79 -72
- package/dist/data-structures/queue/queue.d.ts +45 -0
- package/dist/data-structures/queue/queue.js +77 -0
- package/dist/data-structures/stack/stack.d.ts +18 -5
- package/dist/data-structures/stack/stack.js +56 -7
- package/dist/data-structures/trie/trie.d.ts +5 -0
- package/dist/data-structures/trie/trie.js +47 -0
- package/package.json +2 -2
- package/src/data-structures/hash/hash-map.ts +13 -7
- package/src/data-structures/hash/hash-table.ts +59 -9
- package/src/data-structures/heap/heap.ts +60 -9
- package/src/data-structures/linked-list/doubly-linked-list.ts +129 -129
- package/src/data-structures/linked-list/singly-linked-list.ts +65 -65
- package/src/data-structures/queue/deque.ts +84 -77
- package/src/data-structures/queue/queue.ts +84 -0
- package/src/data-structures/stack/stack.ts +64 -8
- package/src/data-structures/trie/trie.ts +53 -0
package/README.md
CHANGED
|
@@ -52,13 +52,14 @@ Doubly Linked List
|
|
|
52
52
|
|
|
53
53
|
```
|
|
54
54
|
|
|
55
|
+
|
|
55
56
|
## API docs & Examples
|
|
56
57
|
|
|
57
58
|
[API Docs](https://data-structure-typed-docs.vercel.app)
|
|
58
59
|
|
|
59
|
-
[Live Examples](https://
|
|
60
|
+
[Live Examples](https://vivid-algorithm.vercel.app)
|
|
60
61
|
|
|
61
|
-
<a href="https://github.com/zrwusa/
|
|
62
|
+
<a href="https://github.com/zrwusa/vivid-algorithm" target="_blank">Examples Repository</a>
|
|
62
63
|
|
|
63
64
|
## Data Structures
|
|
64
65
|
|
|
@@ -68,464 +69,520 @@ Doubly Linked List
|
|
|
68
69
|
<th>Data Structure</th>
|
|
69
70
|
<th>Unit Test</th>
|
|
70
71
|
<th>Performance Test</th>
|
|
71
|
-
<th>API
|
|
72
|
-
<th>Implemented</th>
|
|
72
|
+
<th>API Docs</th>
|
|
73
73
|
</tr>
|
|
74
74
|
</thead>
|
|
75
75
|
<tbody>
|
|
76
76
|
<tr>
|
|
77
77
|
<td>Binary Tree</td>
|
|
78
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
|
|
79
|
-
</td>
|
|
80
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
|
|
81
|
-
</td>
|
|
82
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
|
|
83
78
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
79
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
80
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
|
|
84
81
|
</tr>
|
|
85
82
|
<tr>
|
|
86
83
|
<td>Binary Search Tree (BST)</td>
|
|
87
84
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
88
85
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
89
86
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BST.html"><span>BST</span></a></td>
|
|
90
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
91
87
|
</tr>
|
|
92
88
|
<tr>
|
|
93
89
|
<td>AVL Tree</td>
|
|
94
90
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
95
91
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
96
92
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AVLTree.html"><span>AVLTree</span></a></td>
|
|
93
|
+
</tr>
|
|
94
|
+
<tr>
|
|
95
|
+
<td>Red Black Tree</td>
|
|
97
96
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
97
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
98
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/RedBlackTree.html"><span>RedBlackTree</span></a></td>
|
|
98
99
|
</tr>
|
|
99
100
|
<tr>
|
|
100
101
|
<td>Tree Multiset</td>
|
|
101
102
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
102
103
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
103
104
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/TreeMultimap.html"><span>TreeMultimap</span></a></td>
|
|
104
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
105
105
|
</tr>
|
|
106
106
|
<tr>
|
|
107
107
|
<td>Segment Tree</td>
|
|
108
|
-
<td></td>
|
|
108
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
109
109
|
<td></td>
|
|
110
110
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SegmentTree.html"><span>SegmentTree</span></a></td>
|
|
111
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
112
111
|
</tr>
|
|
113
112
|
<tr>
|
|
114
113
|
<td>Binary Indexed Tree</td>
|
|
115
114
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
116
115
|
<td></td>
|
|
117
116
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryIndexedTree.html"><span>BinaryIndexedTree</span></a></td>
|
|
118
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
119
117
|
</tr>
|
|
120
118
|
<tr>
|
|
121
|
-
<td>
|
|
122
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
123
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
124
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AbstractGraph.html"><span>AbstractGraph</span></a></td>
|
|
125
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
126
|
-
</tr>
|
|
127
|
-
<tr>
|
|
128
|
-
<td>Directed Graph</td>
|
|
129
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
130
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
131
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DirectedGraph.html"><span>DirectedGraph</span></a></td>
|
|
132
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
133
|
-
</tr>
|
|
134
|
-
<tr>
|
|
135
|
-
<td>Undirected Graph</td>
|
|
136
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
119
|
+
<td>Heap</td>
|
|
137
120
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
138
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
|
|
139
121
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
122
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Heap.html"><span>Heap</span></a></td>
|
|
140
123
|
</tr>
|
|
141
124
|
<tr>
|
|
142
|
-
<td>
|
|
143
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
125
|
+
<td>Priority Queue</td>
|
|
144
126
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
145
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
146
127
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
128
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
|
|
147
129
|
</tr>
|
|
148
130
|
<tr>
|
|
149
|
-
<td>
|
|
150
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
131
|
+
<td>Max Priority Queue</td>
|
|
151
132
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
152
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
153
133
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
134
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
|
|
154
135
|
</tr>
|
|
155
136
|
<tr>
|
|
156
|
-
<td>
|
|
157
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
137
|
+
<td>Min Priority Queue</td>
|
|
158
138
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
159
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
|
|
160
139
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
140
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
|
|
161
141
|
</tr>
|
|
162
142
|
<tr>
|
|
163
|
-
<td>
|
|
164
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
143
|
+
<td>Trie</td>
|
|
165
144
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
166
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
|
|
167
145
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
146
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
|
|
168
147
|
</tr>
|
|
169
148
|
<tr>
|
|
170
|
-
<td>
|
|
171
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
149
|
+
<td>Graph</td>
|
|
172
150
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
173
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/ObjectDeque.html"><span>ObjectDeque</span></a></td>
|
|
174
151
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
152
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AbstractGraph.html"><span>AbstractGraph</span></a></td>
|
|
175
153
|
</tr>
|
|
176
154
|
<tr>
|
|
177
|
-
<td>
|
|
178
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
155
|
+
<td>Directed Graph</td>
|
|
179
156
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
180
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/ArrayDeque.html"><span>ArrayDeque</span></a></td>
|
|
181
157
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
158
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DirectedGraph.html"><span>DirectedGraph</span></a></td>
|
|
182
159
|
</tr>
|
|
183
160
|
<tr>
|
|
184
|
-
<td>
|
|
161
|
+
<td>Undirected Graph</td>
|
|
185
162
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
186
|
-
<td></td>
|
|
187
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
|
|
188
163
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
164
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
|
|
189
165
|
</tr>
|
|
190
|
-
|
|
191
|
-
[//]: # (<tr>)
|
|
192
|
-
|
|
193
|
-
[//]: # (<td>Hash</td>)
|
|
194
|
-
|
|
195
|
-
[//]: # (<td></td>)
|
|
196
|
-
|
|
197
|
-
[//]: # (<td></td>)
|
|
198
|
-
|
|
199
|
-
[//]: # (<td><a href="https://data-structure-typed-docs.vercel.app/classes/HashTable.html"><span>HashTable</span></a></td>)
|
|
200
|
-
|
|
201
|
-
[//]: # (<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>)
|
|
202
|
-
|
|
203
|
-
[//]: # (</tr>)
|
|
204
166
|
<tr>
|
|
205
|
-
<td>
|
|
206
|
-
<td></td>
|
|
207
|
-
<td></td>
|
|
208
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateSet.html"><span>CoordinateSet</span></a></td>
|
|
167
|
+
<td>Queue</td>
|
|
209
168
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
210
|
-
</tr>
|
|
211
|
-
<tr>
|
|
212
|
-
<td>Coordinate Map</td>
|
|
213
|
-
<td></td>
|
|
214
|
-
<td></td>
|
|
215
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateMap.html"><span>CoordinateMap</span></a></td>
|
|
216
169
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
170
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
|
|
217
171
|
</tr>
|
|
218
172
|
<tr>
|
|
219
|
-
<td>
|
|
173
|
+
<td>Deque</td>
|
|
220
174
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
221
175
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
222
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/
|
|
223
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
176
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Deque.html"><span>Deque</span></a></td>
|
|
224
177
|
</tr>
|
|
225
178
|
<tr>
|
|
226
|
-
<td>
|
|
227
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
179
|
+
<td>Linked List</td>
|
|
228
180
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
229
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
|
|
230
181
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
182
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
231
183
|
</tr>
|
|
232
184
|
<tr>
|
|
233
|
-
<td>
|
|
234
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
185
|
+
<td>Singly Linked List</td>
|
|
235
186
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
236
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
|
|
237
187
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
188
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
238
189
|
</tr>
|
|
239
190
|
<tr>
|
|
240
|
-
<td>
|
|
241
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
191
|
+
<td>Doubly Linked List</td>
|
|
242
192
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
243
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
|
|
244
193
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
194
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
|
|
245
195
|
</tr>
|
|
246
196
|
<tr>
|
|
247
|
-
<td>
|
|
197
|
+
<td>Stack</td>
|
|
248
198
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
249
|
-
<td></td>
|
|
250
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
|
|
251
199
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
200
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
|
|
252
201
|
</tr>
|
|
253
202
|
</tbody>
|
|
254
203
|
</table>
|
|
255
204
|
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
## Complexities
|
|
259
|
-
|
|
260
|
-
### performance of Big O
|
|
205
|
+
## Standard library data structure comparison
|
|
261
206
|
|
|
262
207
|
<table>
|
|
263
|
-
<thead>
|
|
264
|
-
<tr>
|
|
265
|
-
<th>
|
|
266
|
-
<th>
|
|
267
|
-
<th>
|
|
268
|
-
<th>
|
|
269
|
-
|
|
270
|
-
</
|
|
271
|
-
|
|
272
|
-
<
|
|
273
|
-
<
|
|
274
|
-
<td
|
|
275
|
-
<td>
|
|
276
|
-
<td>
|
|
277
|
-
|
|
278
|
-
<
|
|
279
|
-
|
|
280
|
-
<
|
|
281
|
-
<td
|
|
282
|
-
<td>
|
|
283
|
-
|
|
284
|
-
<
|
|
285
|
-
<td>
|
|
286
|
-
|
|
287
|
-
<
|
|
288
|
-
<td
|
|
289
|
-
|
|
290
|
-
<
|
|
291
|
-
<td>
|
|
292
|
-
<td>
|
|
293
|
-
|
|
294
|
-
<
|
|
295
|
-
|
|
296
|
-
<
|
|
297
|
-
<td>
|
|
298
|
-
<td>
|
|
299
|
-
<td>
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
<
|
|
303
|
-
<td>
|
|
304
|
-
<td
|
|
305
|
-
<td
|
|
306
|
-
<td
|
|
307
|
-
</tr>
|
|
308
|
-
<tr>
|
|
309
|
-
<td
|
|
310
|
-
<td
|
|
311
|
-
<td
|
|
312
|
-
<td
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
<
|
|
316
|
-
<td
|
|
317
|
-
<td
|
|
318
|
-
<td
|
|
319
|
-
|
|
320
|
-
<
|
|
321
|
-
|
|
322
|
-
|
|
208
|
+
<thead>
|
|
209
|
+
<tr>
|
|
210
|
+
<th>Data Structure Typed</th>
|
|
211
|
+
<th>C++ STL</th>
|
|
212
|
+
<th>java.util</th>
|
|
213
|
+
<th>Python collections</th>
|
|
214
|
+
</tr>
|
|
215
|
+
</thead>
|
|
216
|
+
<tbody>
|
|
217
|
+
<tr>
|
|
218
|
+
<td>Heap<E></td>
|
|
219
|
+
<td>priority_queue<T></td>
|
|
220
|
+
<td>PriorityQueue<E></td>
|
|
221
|
+
<td>heapq</td>
|
|
222
|
+
</tr>
|
|
223
|
+
<tr>
|
|
224
|
+
<td>Deque<E></td>
|
|
225
|
+
<td>deque<T></td>
|
|
226
|
+
<td>ArrayDeque<E></td>
|
|
227
|
+
<td>deque</td>
|
|
228
|
+
</tr>
|
|
229
|
+
<tr>
|
|
230
|
+
<td>Queue<E></td>
|
|
231
|
+
<td>queue<T></td>
|
|
232
|
+
<td>Queue<E></td>
|
|
233
|
+
<td>-</td>
|
|
234
|
+
</tr>
|
|
235
|
+
<tr>
|
|
236
|
+
<td>HashMap<K, V></td>
|
|
237
|
+
<td>unordered_map<K, V></td>
|
|
238
|
+
<td>HashMap<K, V></td>
|
|
239
|
+
<td>defaultdict</td>
|
|
240
|
+
</tr>
|
|
241
|
+
<tr>
|
|
242
|
+
<td>DoublyLinkedList<E></td>
|
|
243
|
+
<td>list<T></td>
|
|
244
|
+
<td>LinkedList<E></td>
|
|
245
|
+
<td>-</td>
|
|
246
|
+
</tr>
|
|
247
|
+
<tr>
|
|
248
|
+
<td>SinglyLinkedList<E></td>
|
|
249
|
+
<td>-</td>
|
|
250
|
+
<td>-</td>
|
|
251
|
+
<td>-</td>
|
|
252
|
+
</tr>
|
|
253
|
+
<tr>
|
|
254
|
+
<td>BinaryTree<K, V></td>
|
|
255
|
+
<td>-</td>
|
|
256
|
+
<td>-</td>
|
|
257
|
+
<td>-</td>
|
|
258
|
+
</tr>
|
|
259
|
+
<tr>
|
|
260
|
+
<td>BST<K, V></td>
|
|
261
|
+
<td>-</td>
|
|
262
|
+
<td>-</td>
|
|
263
|
+
<td>-</td>
|
|
264
|
+
</tr>
|
|
265
|
+
<tr>
|
|
266
|
+
<td>RedBlackTree<E></td>
|
|
267
|
+
<td>set<T></td>
|
|
268
|
+
<td>TreeSet<E></td>
|
|
269
|
+
<td>-</td>
|
|
270
|
+
</tr>
|
|
271
|
+
<tr>
|
|
272
|
+
<td>RedBlackTree<K, V></td>
|
|
273
|
+
<td>map<K, V></td>
|
|
274
|
+
<td>TreeMap<K, V></td>
|
|
275
|
+
<td>-</td>
|
|
276
|
+
</tr>
|
|
277
|
+
<tr>
|
|
278
|
+
<td>TreeMultimap<K, V></td>
|
|
279
|
+
<td>multimap<K, V></td>
|
|
280
|
+
<td>-</td>
|
|
281
|
+
<td>-</td>
|
|
282
|
+
</tr>
|
|
283
|
+
<tr>
|
|
284
|
+
<td>-</td>
|
|
285
|
+
<td>multiset<T></td>
|
|
286
|
+
<td>-</td>
|
|
287
|
+
<td>-</td>
|
|
288
|
+
</tr>
|
|
289
|
+
<tr>
|
|
290
|
+
<td>Trie</td>
|
|
291
|
+
<td>-</td>
|
|
292
|
+
<td>-</td>
|
|
293
|
+
<td>-</td>
|
|
294
|
+
</tr>
|
|
295
|
+
<tr>
|
|
296
|
+
<td>DirectedGraph<V, E></td>
|
|
297
|
+
<td>-</td>
|
|
298
|
+
<td>-</td>
|
|
299
|
+
<td>-</td>
|
|
300
|
+
</tr>
|
|
301
|
+
<tr>
|
|
302
|
+
<td>UndirectedGraph<V, E></td>
|
|
303
|
+
<td>-</td>
|
|
304
|
+
<td>-</td>
|
|
305
|
+
<td>-</td>
|
|
306
|
+
</tr>
|
|
307
|
+
<tr>
|
|
308
|
+
<td>PriorityQueue<E></td>
|
|
309
|
+
<td>priority_queue<T></td>
|
|
310
|
+
<td>PriorityQueue<E></td>
|
|
311
|
+
<td>-</td>
|
|
312
|
+
</tr>
|
|
313
|
+
<tr>
|
|
314
|
+
<td>Array<E></td>
|
|
315
|
+
<td>vector<T></td>
|
|
316
|
+
<td>ArrayList<E></td>
|
|
317
|
+
<td>list</td>
|
|
318
|
+
</tr>
|
|
319
|
+
<tr>
|
|
320
|
+
<td>Stack<E></td>
|
|
321
|
+
<td>stack<T></td>
|
|
322
|
+
<td>Stack<E></td>
|
|
323
|
+
<td>-</td>
|
|
324
|
+
</tr>
|
|
325
|
+
<tr>
|
|
326
|
+
<td>Set<E></td>
|
|
327
|
+
<td>-</td>
|
|
328
|
+
<td>HashSet<E></td>
|
|
329
|
+
<td>set</td>
|
|
330
|
+
</tr>
|
|
331
|
+
<tr>
|
|
332
|
+
<td>Map<K, V></td>
|
|
333
|
+
<td>-</td>
|
|
334
|
+
<td>HashMap<K, V></td>
|
|
335
|
+
<td>dict</td>
|
|
336
|
+
</tr>
|
|
337
|
+
<tr>
|
|
338
|
+
<td>-</td>
|
|
339
|
+
<td>unordered_set<T></td>
|
|
340
|
+
<td>HashSet<E></td>
|
|
341
|
+
<td>-</td>
|
|
342
|
+
</tr>
|
|
343
|
+
<tr>
|
|
344
|
+
<td>Map<K, V></td>
|
|
345
|
+
<td>-</td>
|
|
346
|
+
<td>-</td>
|
|
347
|
+
<td>OrderedDict</td>
|
|
348
|
+
</tr>
|
|
349
|
+
<tr>
|
|
350
|
+
<td>-</td>
|
|
351
|
+
<td>unordered_multiset</td>
|
|
352
|
+
<td>-</td>
|
|
353
|
+
<td>Counter</td>
|
|
354
|
+
</tr>
|
|
355
|
+
<tr>
|
|
356
|
+
<td>-</td>
|
|
357
|
+
<td>-</td>
|
|
358
|
+
<td>LinkedHashSet<E></td>
|
|
359
|
+
<td>-</td>
|
|
360
|
+
</tr>
|
|
361
|
+
<tr>
|
|
362
|
+
<td>HashMap<K, V></td>
|
|
363
|
+
<td>-</td>
|
|
364
|
+
<td>LinkedHashMap<K, V></td>
|
|
365
|
+
<td>-</td>
|
|
366
|
+
</tr>
|
|
367
|
+
<tr>
|
|
368
|
+
<td>-</td>
|
|
369
|
+
<td>unordered_multimap<K, V></td>
|
|
370
|
+
<td>-</td>
|
|
371
|
+
<td>-</td>
|
|
372
|
+
</tr>
|
|
373
|
+
<tr>
|
|
374
|
+
<td>-</td>
|
|
375
|
+
<td>bitset<N></td>
|
|
376
|
+
<td>-</td>
|
|
377
|
+
<td>-</td>
|
|
378
|
+
</tr>
|
|
379
|
+
</tbody>
|
|
323
380
|
</table>
|
|
324
381
|
|
|
325
|
-
|
|
382
|
+
## Benchmark
|
|
383
|
+
|
|
384
|
+
[//]: # (No deletion!!! Start of Replace Section)
|
|
385
|
+
<div class="json-to-html-collapse clearfix 0">
|
|
386
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>avl-tree</span></div>
|
|
387
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.32</td><td>31.93</td><td>3.67e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>70.90</td><td>14.10</td><td>0.00</td></tr><tr><td>10,000 addMany</td><td>40.58</td><td>24.64</td><td>4.87e-4</td></tr><tr><td>10,000 get</td><td>27.31</td><td>36.62</td><td>2.00e-4</td></tr></table></div>
|
|
388
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
389
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>binary-tree</span></div>
|
|
390
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 add randomly</td><td>12.35</td><td>80.99</td><td>7.17e-5</td></tr><tr><td>1,000 add & delete randomly</td><td>15.98</td><td>62.58</td><td>7.98e-4</td></tr><tr><td>1,000 addMany</td><td>10.96</td><td>91.27</td><td>0.00</td></tr><tr><td>1,000 get</td><td>18.61</td><td>53.73</td><td>0.00</td></tr><tr><td>1,000 dfs</td><td>164.20</td><td>6.09</td><td>0.04</td></tr><tr><td>1,000 bfs</td><td>58.84</td><td>17.00</td><td>0.01</td></tr><tr><td>1,000 morris</td><td>256.66</td><td>3.90</td><td>7.70e-4</td></tr></table></div>
|
|
391
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
392
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>bst</span></div>
|
|
393
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.59</td><td>31.66</td><td>2.74e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>74.56</td><td>13.41</td><td>8.32e-4</td></tr><tr><td>10,000 addMany</td><td>29.16</td><td>34.30</td><td>0.00</td></tr><tr><td>10,000 get</td><td>29.24</td><td>34.21</td><td>0.00</td></tr></table></div>
|
|
394
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
395
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>rb-tree</span></div>
|
|
396
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add</td><td>85.85</td><td>11.65</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>211.54</td><td>4.73</td><td>0.00</td></tr><tr><td>100,000 getNode</td><td>37.92</td><td>26.37</td><td>1.65e-4</td></tr></table></div>
|
|
397
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
398
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>comparison</span></div>
|
|
399
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>SRC PQ 10,000 add</td><td>0.57</td><td>1748.73</td><td>4.96e-6</td></tr><tr><td>CJS PQ 10,000 add</td><td>0.57</td><td>1746.69</td><td>4.91e-6</td></tr><tr><td>MJS PQ 10,000 add</td><td>0.57</td><td>1749.68</td><td>4.43e-6</td></tr><tr><td>SRC PQ 10,000 add & pop</td><td>3.47</td><td>288.14</td><td>6.38e-4</td></tr><tr><td>CJS PQ 10,000 add & pop</td><td>3.39</td><td>295.36</td><td>3.90e-5</td></tr><tr><td>MJS PQ 10,000 add & pop</td><td>3.37</td><td>297.17</td><td>3.03e-5</td></tr></table></div>
|
|
400
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
401
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>directed-graph</span></div>
|
|
402
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 addVertex</td><td>0.10</td><td>9534.93</td><td>8.72e-7</td></tr><tr><td>1,000 addEdge</td><td>6.30</td><td>158.67</td><td>0.00</td></tr><tr><td>1,000 getVertex</td><td>0.05</td><td>2.16e+4</td><td>3.03e-7</td></tr><tr><td>1,000 getEdge</td><td>22.31</td><td>44.82</td><td>0.00</td></tr><tr><td>tarjan</td><td>210.90</td><td>4.74</td><td>0.01</td></tr><tr><td>tarjan all</td><td>214.72</td><td>4.66</td><td>0.01</td></tr><tr><td>topologicalSort</td><td>172.52</td><td>5.80</td><td>0.00</td></tr></table></div>
|
|
403
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
404
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>hash-map</span></div>
|
|
405
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 set</td><td>275.88</td><td>3.62</td><td>0.12</td></tr><tr><td>1,000,000 Map set</td><td>211.66</td><td>4.72</td><td>0.01</td></tr><tr><td>1,000,000 Set add</td><td>177.72</td><td>5.63</td><td>0.02</td></tr><tr><td>1,000,000 set & get</td><td>317.60</td><td>3.15</td><td>0.02</td></tr><tr><td>1,000,000 Map set & get</td><td>274.99</td><td>3.64</td><td>0.03</td></tr><tr><td>1,000,000 Set add & has</td><td>172.23</td><td>5.81</td><td>0.02</td></tr><tr><td>1,000,000 ObjKey set & get</td><td>929.40</td><td>1.08</td><td>0.07</td></tr><tr><td>1,000,000 Map ObjKey set & get</td><td>310.02</td><td>3.23</td><td>0.05</td></tr><tr><td>1,000,000 Set ObjKey add & has</td><td>283.28</td><td>3.53</td><td>0.04</td></tr></table></div>
|
|
406
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
407
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>heap</span></div>
|
|
408
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add & pop</td><td>5.80</td><td>172.35</td><td>8.78e-5</td></tr><tr><td>10,000 fib add & pop</td><td>357.92</td><td>2.79</td><td>0.00</td></tr></table></div>
|
|
409
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
410
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>doubly-linked-list</span></div>
|
|
411
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>221.57</td><td>4.51</td><td>0.03</td></tr><tr><td>1,000,000 unshift</td><td>229.02</td><td>4.37</td><td>0.07</td></tr><tr><td>1,000,000 unshift & shift</td><td>169.21</td><td>5.91</td><td>0.02</td></tr><tr><td>1,000,000 insertBefore</td><td>314.48</td><td>3.18</td><td>0.07</td></tr></table></div>
|
|
412
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
413
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>singly-linked-list</span></div>
|
|
414
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 push & pop</td><td>212.98</td><td>4.70</td><td>0.01</td></tr><tr><td>10,000 insertBefore</td><td>250.68</td><td>3.99</td><td>0.01</td></tr></table></div>
|
|
415
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
416
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>max-priority-queue</span></div>
|
|
417
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 refill & poll</td><td>8.91</td><td>112.29</td><td>2.26e-4</td></tr></table></div>
|
|
418
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
419
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>priority-queue</span></div>
|
|
420
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add & pop</td><td>103.59</td><td>9.65</td><td>0.00</td></tr></table></div>
|
|
421
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
422
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>deque</span></div>
|
|
423
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>14.55</td><td>68.72</td><td>6.91e-4</td></tr><tr><td>1,000,000 push & pop</td><td>23.40</td><td>42.73</td><td>5.94e-4</td></tr><tr><td>1,000,000 push & shift</td><td>24.41</td><td>40.97</td><td>1.45e-4</td></tr><tr><td>1,000,000 unshift & shift</td><td>22.56</td><td>44.32</td><td>1.30e-4</td></tr></table></div>
|
|
424
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
425
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>queue</span></div>
|
|
426
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>39.90</td><td>25.07</td><td>0.01</td></tr><tr><td>1,000,000 push & shift</td><td>81.79</td><td>12.23</td><td>0.00</td></tr></table></div>
|
|
427
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
428
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>stack</span></div>
|
|
429
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>37.60</td><td>26.60</td><td>0.00</td></tr><tr><td>1,000,000 push & pop</td><td>47.01</td><td>21.27</td><td>0.00</td></tr></table></div>
|
|
430
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
431
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>trie</span></div>
|
|
432
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 push</td><td>45.97</td><td>21.76</td><td>0.00</td></tr><tr><td>100,000 getWords</td><td>66.20</td><td>15.11</td><td>0.00</td></tr></table></div>
|
|
433
|
+
</div>
|
|
434
|
+
|
|
435
|
+
[//]: # (No deletion!!! End of Replace Section)
|
|
436
|
+
|
|
437
|
+
## Built-in classic algorithms
|
|
326
438
|
|
|
327
439
|
<table>
|
|
328
|
-
<thead>
|
|
329
|
-
<tr>
|
|
330
|
-
<th>
|
|
331
|
-
<th>
|
|
332
|
-
<th>
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
<
|
|
336
|
-
|
|
337
|
-
</
|
|
338
|
-
<
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
<td>
|
|
342
|
-
|
|
343
|
-
<
|
|
344
|
-
<td>
|
|
345
|
-
<td
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
<td
|
|
349
|
-
|
|
350
|
-
<
|
|
351
|
-
<td>
|
|
352
|
-
<td>
|
|
353
|
-
|
|
354
|
-
</
|
|
355
|
-
<
|
|
356
|
-
|
|
357
|
-
<
|
|
358
|
-
<td>
|
|
359
|
-
<td>1
|
|
360
|
-
|
|
361
|
-
|
|
362
|
-
</
|
|
363
|
-
|
|
364
|
-
<
|
|
365
|
-
<td>
|
|
366
|
-
<td>
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
<td
|
|
370
|
-
</tr>
|
|
371
|
-
<tr>
|
|
372
|
-
<td
|
|
373
|
-
<td
|
|
374
|
-
<td>
|
|
375
|
-
|
|
376
|
-
<
|
|
377
|
-
<td>
|
|
378
|
-
</
|
|
379
|
-
<
|
|
380
|
-
|
|
381
|
-
<
|
|
382
|
-
<td>
|
|
383
|
-
<td>
|
|
384
|
-
<td>
|
|
385
|
-
|
|
386
|
-
|
|
387
|
-
<
|
|
388
|
-
<td
|
|
389
|
-
<td>
|
|
390
|
-
|
|
391
|
-
<
|
|
392
|
-
<td>
|
|
393
|
-
<td
|
|
394
|
-
</
|
|
395
|
-
|
|
396
|
-
<
|
|
397
|
-
<td>
|
|
398
|
-
<td>
|
|
399
|
-
|
|
400
|
-
|
|
401
|
-
<td
|
|
402
|
-
</tr>
|
|
403
|
-
<tr>
|
|
404
|
-
<td
|
|
405
|
-
<td>
|
|
406
|
-
|
|
407
|
-
<td>
|
|
408
|
-
|
|
409
|
-
<
|
|
410
|
-
</
|
|
411
|
-
<
|
|
412
|
-
|
|
413
|
-
|
|
414
|
-
<td>
|
|
415
|
-
|
|
416
|
-
<
|
|
417
|
-
<td>
|
|
418
|
-
|
|
419
|
-
|
|
440
|
+
<thead>
|
|
441
|
+
<tr>
|
|
442
|
+
<th>Algorithm</th>
|
|
443
|
+
<th>Function Description</th>
|
|
444
|
+
<th>Iteration Type</th>
|
|
445
|
+
</tr>
|
|
446
|
+
</thead>
|
|
447
|
+
<tbody>
|
|
448
|
+
<tr>
|
|
449
|
+
<td>Binary Tree DFS</td>
|
|
450
|
+
<td>Traverse a binary tree in a depth-first manner, starting from the root node, first visiting the left subtree,
|
|
451
|
+
and then the right subtree, using recursion.
|
|
452
|
+
</td>
|
|
453
|
+
<td>Recursion + Iteration</td>
|
|
454
|
+
</tr>
|
|
455
|
+
<tr>
|
|
456
|
+
<td>Binary Tree BFS</td>
|
|
457
|
+
<td>Traverse a binary tree in a breadth-first manner, starting from the root node, visiting nodes level by level
|
|
458
|
+
from left to right.
|
|
459
|
+
</td>
|
|
460
|
+
<td>Iteration</td>
|
|
461
|
+
</tr>
|
|
462
|
+
<tr>
|
|
463
|
+
<td>Graph DFS</td>
|
|
464
|
+
<td>Traverse a graph in a depth-first manner, starting from a given node, exploring along one path as deeply as
|
|
465
|
+
possible, and backtracking to explore other paths. Used for finding connected components, paths, etc.
|
|
466
|
+
</td>
|
|
467
|
+
<td>Recursion + Iteration</td>
|
|
468
|
+
</tr>
|
|
469
|
+
<tr>
|
|
470
|
+
<td>Binary Tree Morris</td>
|
|
471
|
+
<td>Morris traversal is an in-order traversal algorithm for binary trees with O(1) space complexity. It allows tree
|
|
472
|
+
traversal without additional stack or recursion.
|
|
473
|
+
</td>
|
|
474
|
+
<td>Iteration</td>
|
|
475
|
+
</tr>
|
|
476
|
+
<tr>
|
|
477
|
+
<td>Graph BFS</td>
|
|
478
|
+
<td>Traverse a graph in a breadth-first manner, starting from a given node, first visiting nodes directly connected
|
|
479
|
+
to the starting node, and then expanding level by level. Used for finding shortest paths, etc.
|
|
480
|
+
</td>
|
|
481
|
+
<td>Recursion + Iteration</td>
|
|
482
|
+
</tr>
|
|
483
|
+
<tr>
|
|
484
|
+
<td>Graph Tarjan's Algorithm</td>
|
|
485
|
+
<td>Find strongly connected components in a graph, typically implemented using depth-first search.</td>
|
|
486
|
+
<td>Recursion</td>
|
|
487
|
+
</tr>
|
|
488
|
+
<tr>
|
|
489
|
+
<td>Graph Bellman-Ford Algorithm</td>
|
|
490
|
+
<td>Finding the shortest paths from a single source, can handle negative weight edges</td>
|
|
491
|
+
<td>Iteration</td>
|
|
492
|
+
</tr>
|
|
493
|
+
<tr>
|
|
494
|
+
<td>Graph Dijkstra's Algorithm</td>
|
|
495
|
+
<td>Finding the shortest paths from a single source, cannot handle negative weight edges</td>
|
|
496
|
+
<td>Iteration</td>
|
|
497
|
+
</tr>
|
|
498
|
+
<tr>
|
|
499
|
+
<td>Graph Floyd-Warshall Algorithm</td>
|
|
500
|
+
<td>Finding the shortest paths between all pairs of nodes</td>
|
|
501
|
+
<td>Iteration</td>
|
|
502
|
+
</tr>
|
|
503
|
+
<tr>
|
|
504
|
+
<td>Graph getCycles</td>
|
|
505
|
+
<td>Find all cycles in a graph or detect the presence of cycles.</td>
|
|
506
|
+
<td>Recursion</td>
|
|
507
|
+
</tr>
|
|
508
|
+
<tr>
|
|
509
|
+
<td>Graph getCutVertexes</td>
|
|
510
|
+
<td>Find cut vertices in a graph, which are nodes that, when removed, increase the number of connected components in
|
|
511
|
+
the graph.
|
|
512
|
+
</td>
|
|
513
|
+
<td>Recursion</td>
|
|
514
|
+
</tr>
|
|
515
|
+
<tr>
|
|
516
|
+
<td>Graph getSCCs</td>
|
|
517
|
+
<td>Find strongly connected components in a graph, which are subgraphs where any two nodes can reach each other.
|
|
518
|
+
</td>
|
|
519
|
+
<td>Recursion</td>
|
|
520
|
+
</tr>
|
|
521
|
+
<tr>
|
|
522
|
+
<td>Graph getBridges</td>
|
|
523
|
+
<td>Find bridges in a graph, which are edges that, when removed, increase the number of connected components in the
|
|
524
|
+
graph.
|
|
525
|
+
</td>
|
|
526
|
+
<td>Recursion</td>
|
|
527
|
+
</tr>
|
|
528
|
+
<tr>
|
|
529
|
+
<td>Graph topologicalSort</td>
|
|
530
|
+
<td>Perform topological sorting on a directed acyclic graph (DAG) to find a linear order of nodes such that all
|
|
531
|
+
directed edges go from earlier nodes to later nodes.
|
|
532
|
+
</td>
|
|
533
|
+
<td>Recursion</td>
|
|
534
|
+
</tr>
|
|
535
|
+
</tbody>
|
|
420
536
|
</table>
|
|
421
537
|
|
|
422
|
-
|
|
423
|
-
|
|
538
|
+
## Software Engineering Design Standards
|
|
424
539
|
<table>
|
|
425
|
-
<
|
|
426
|
-
<
|
|
427
|
-
<th>
|
|
428
|
-
|
|
429
|
-
<
|
|
430
|
-
<
|
|
431
|
-
<
|
|
432
|
-
|
|
433
|
-
<
|
|
434
|
-
</
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
<tr>
|
|
438
|
-
<td
|
|
439
|
-
<td>
|
|
440
|
-
|
|
441
|
-
<
|
|
442
|
-
<td>
|
|
443
|
-
<td>
|
|
444
|
-
|
|
445
|
-
|
|
446
|
-
<
|
|
447
|
-
<td
|
|
448
|
-
|
|
449
|
-
<
|
|
450
|
-
<td>
|
|
451
|
-
<td>
|
|
452
|
-
|
|
453
|
-
<
|
|
454
|
-
</
|
|
455
|
-
<
|
|
456
|
-
|
|
457
|
-
<
|
|
458
|
-
<td>
|
|
459
|
-
<td>
|
|
460
|
-
|
|
461
|
-
<
|
|
462
|
-
<td
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
<
|
|
466
|
-
<td>
|
|
467
|
-
<td>
|
|
468
|
-
|
|
469
|
-
<td>1</td>
|
|
470
|
-
<td>No</td>
|
|
471
|
-
<td></td>
|
|
472
|
-
</tr>
|
|
473
|
-
<tr>
|
|
474
|
-
<td><strong>Merge sort</strong></td>
|
|
475
|
-
<td>n log(n)</td>
|
|
476
|
-
<td>n log(n)</td>
|
|
477
|
-
<td>n log(n)</td>
|
|
478
|
-
<td>n</td>
|
|
479
|
-
<td>Yes</td>
|
|
480
|
-
<td></td>
|
|
481
|
-
</tr>
|
|
482
|
-
<tr>
|
|
483
|
-
<td><strong>Quick sort</strong></td>
|
|
484
|
-
<td>n log(n)</td>
|
|
485
|
-
<td>n log(n)</td>
|
|
486
|
-
<td>n<sup>2</sup></td>
|
|
487
|
-
<td>log(n)</td>
|
|
488
|
-
<td>No</td>
|
|
489
|
-
<td>Quicksort is usually done in-place with O(log(n)) stack space</td>
|
|
490
|
-
</tr>
|
|
491
|
-
<tr>
|
|
492
|
-
<td><strong>Shell sort</strong></td>
|
|
493
|
-
<td>n log(n)</td>
|
|
494
|
-
<td>depends on gap sequence</td>
|
|
495
|
-
<td>n (log(n))<sup>2</sup></td>
|
|
496
|
-
<td>1</td>
|
|
497
|
-
<td>No</td>
|
|
498
|
-
<td></td>
|
|
499
|
-
</tr>
|
|
500
|
-
<tr>
|
|
501
|
-
<td><strong>Counting sort</strong></td>
|
|
502
|
-
<td>n + r</td>
|
|
503
|
-
<td>n + r</td>
|
|
504
|
-
<td>n + r</td>
|
|
505
|
-
<td>n + r</td>
|
|
506
|
-
<td>Yes</td>
|
|
507
|
-
<td>r - biggest number in array</td>
|
|
508
|
-
</tr>
|
|
509
|
-
<tr>
|
|
510
|
-
<td><strong>Radix sort</strong></td>
|
|
511
|
-
<td>n * k</td>
|
|
512
|
-
<td>n * k</td>
|
|
513
|
-
<td>n * k</td>
|
|
514
|
-
<td>n + k</td>
|
|
515
|
-
<td>Yes</td>
|
|
516
|
-
<td>k - length of longest key</td>
|
|
517
|
-
</tr>
|
|
518
|
-
</tbody>
|
|
540
|
+
<tr>
|
|
541
|
+
<th>Principle</th>
|
|
542
|
+
<th>Description</th>
|
|
543
|
+
</tr>
|
|
544
|
+
<tr>
|
|
545
|
+
<td>Practicality</td>
|
|
546
|
+
<td>Follows ES6 and ESNext standards, offering unified and considerate optional parameters, and simplifies method names.</td>
|
|
547
|
+
</tr>
|
|
548
|
+
<tr>
|
|
549
|
+
<td>Extensibility</td>
|
|
550
|
+
<td>Adheres to OOP (Object-Oriented Programming) principles, allowing inheritance for all data structures.</td>
|
|
551
|
+
</tr>
|
|
552
|
+
<tr>
|
|
553
|
+
<td>Modularization</td>
|
|
554
|
+
<td>Includes data structure modularization and independent NPM packages.</td>
|
|
555
|
+
</tr>
|
|
556
|
+
<tr>
|
|
557
|
+
<td>Efficiency</td>
|
|
558
|
+
<td>All methods provide time and space complexity, comparable to native JS performance.</td>
|
|
559
|
+
</tr>
|
|
560
|
+
<tr>
|
|
561
|
+
<td>Maintainability</td>
|
|
562
|
+
<td>Follows open-source community development standards, complete documentation, continuous integration, and adheres to TDD (Test-Driven Development) patterns.</td>
|
|
563
|
+
</tr>
|
|
564
|
+
<tr>
|
|
565
|
+
<td>Testability</td>
|
|
566
|
+
<td>Automated and customized unit testing, performance testing, and integration testing.</td>
|
|
567
|
+
</tr>
|
|
568
|
+
<tr>
|
|
569
|
+
<td>Portability</td>
|
|
570
|
+
<td>Plans for porting to Java, Python, and C++, currently achieved to 80%.</td>
|
|
571
|
+
</tr>
|
|
572
|
+
<tr>
|
|
573
|
+
<td>Reusability</td>
|
|
574
|
+
<td>Fully decoupled, minimized side effects, and adheres to OOP.</td>
|
|
575
|
+
</tr>
|
|
576
|
+
<tr>
|
|
577
|
+
<td>Security</td>
|
|
578
|
+
<td>Carefully designed security for member variables and methods. Read-write separation. Data structure software does not need to consider other security aspects.</td>
|
|
579
|
+
</tr>
|
|
580
|
+
<tr>
|
|
581
|
+
<td>Scalability</td>
|
|
582
|
+
<td>Data structure software does not involve load issues.</td>
|
|
583
|
+
</tr>
|
|
519
584
|
</table>
|
|
520
585
|
|
|
521
|
-

|
|
522
|
-
|
|
523
|
-

|
|
524
|
-
|
|
525
|
-

|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
586
|
|
|
530
587
|
|
|
531
588
|
|