max-heap-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
|
@@ -116,13 +116,14 @@ yarn add max-heap-typed
|
|
|
116
116
|
}
|
|
117
117
|
```
|
|
118
118
|
|
|
119
|
+
|
|
119
120
|
## API docs & Examples
|
|
120
121
|
|
|
121
122
|
[API Docs](https://data-structure-typed-docs.vercel.app)
|
|
122
123
|
|
|
123
|
-
[Live Examples](https://
|
|
124
|
+
[Live Examples](https://vivid-algorithm.vercel.app)
|
|
124
125
|
|
|
125
|
-
<a href="https://github.com/zrwusa/
|
|
126
|
+
<a href="https://github.com/zrwusa/vivid-algorithm" target="_blank">Examples Repository</a>
|
|
126
127
|
|
|
127
128
|
## Data Structures
|
|
128
129
|
|
|
@@ -132,464 +133,520 @@ yarn add max-heap-typed
|
|
|
132
133
|
<th>Data Structure</th>
|
|
133
134
|
<th>Unit Test</th>
|
|
134
135
|
<th>Performance Test</th>
|
|
135
|
-
<th>API
|
|
136
|
-
<th>Implemented</th>
|
|
136
|
+
<th>API Docs</th>
|
|
137
137
|
</tr>
|
|
138
138
|
</thead>
|
|
139
139
|
<tbody>
|
|
140
140
|
<tr>
|
|
141
141
|
<td>Binary Tree</td>
|
|
142
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
|
|
143
|
-
</td>
|
|
144
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
|
|
145
|
-
</td>
|
|
146
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
|
|
147
142
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
143
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
144
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
|
|
148
145
|
</tr>
|
|
149
146
|
<tr>
|
|
150
147
|
<td>Binary Search Tree (BST)</td>
|
|
151
148
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
152
149
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
153
150
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BST.html"><span>BST</span></a></td>
|
|
154
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
155
151
|
</tr>
|
|
156
152
|
<tr>
|
|
157
153
|
<td>AVL Tree</td>
|
|
158
154
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
159
155
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
160
156
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AVLTree.html"><span>AVLTree</span></a></td>
|
|
157
|
+
</tr>
|
|
158
|
+
<tr>
|
|
159
|
+
<td>Red Black Tree</td>
|
|
161
160
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
161
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
162
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/RedBlackTree.html"><span>RedBlackTree</span></a></td>
|
|
162
163
|
</tr>
|
|
163
164
|
<tr>
|
|
164
165
|
<td>Tree Multiset</td>
|
|
165
166
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
166
167
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
167
168
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/TreeMultimap.html"><span>TreeMultimap</span></a></td>
|
|
168
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
169
169
|
</tr>
|
|
170
170
|
<tr>
|
|
171
171
|
<td>Segment Tree</td>
|
|
172
|
-
<td></td>
|
|
172
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
173
173
|
<td></td>
|
|
174
174
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SegmentTree.html"><span>SegmentTree</span></a></td>
|
|
175
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
176
175
|
</tr>
|
|
177
176
|
<tr>
|
|
178
177
|
<td>Binary Indexed Tree</td>
|
|
179
178
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
180
179
|
<td></td>
|
|
181
180
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryIndexedTree.html"><span>BinaryIndexedTree</span></a></td>
|
|
182
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
183
181
|
</tr>
|
|
184
182
|
<tr>
|
|
185
|
-
<td>
|
|
186
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
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/AbstractGraph.html"><span>AbstractGraph</span></a></td>
|
|
189
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
190
|
-
</tr>
|
|
191
|
-
<tr>
|
|
192
|
-
<td>Directed Graph</td>
|
|
193
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
194
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
195
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DirectedGraph.html"><span>DirectedGraph</span></a></td>
|
|
196
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
197
|
-
</tr>
|
|
198
|
-
<tr>
|
|
199
|
-
<td>Undirected Graph</td>
|
|
200
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
183
|
+
<td>Heap</td>
|
|
201
184
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
202
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
|
|
203
185
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
186
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Heap.html"><span>Heap</span></a></td>
|
|
204
187
|
</tr>
|
|
205
188
|
<tr>
|
|
206
|
-
<td>
|
|
207
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
189
|
+
<td>Priority Queue</td>
|
|
208
190
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
209
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
210
191
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
192
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
|
|
211
193
|
</tr>
|
|
212
194
|
<tr>
|
|
213
|
-
<td>
|
|
214
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
195
|
+
<td>Max Priority Queue</td>
|
|
215
196
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
216
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
217
197
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
198
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
|
|
218
199
|
</tr>
|
|
219
200
|
<tr>
|
|
220
|
-
<td>
|
|
221
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
201
|
+
<td>Min Priority Queue</td>
|
|
222
202
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
223
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
|
|
224
203
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
204
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
|
|
225
205
|
</tr>
|
|
226
206
|
<tr>
|
|
227
|
-
<td>
|
|
228
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
207
|
+
<td>Trie</td>
|
|
229
208
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
230
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
|
|
231
209
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
210
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
|
|
232
211
|
</tr>
|
|
233
212
|
<tr>
|
|
234
|
-
<td>
|
|
235
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
213
|
+
<td>Graph</td>
|
|
236
214
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
237
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/ObjectDeque.html"><span>ObjectDeque</span></a></td>
|
|
238
215
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
216
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AbstractGraph.html"><span>AbstractGraph</span></a></td>
|
|
239
217
|
</tr>
|
|
240
218
|
<tr>
|
|
241
|
-
<td>
|
|
242
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
219
|
+
<td>Directed Graph</td>
|
|
243
220
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
244
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/ArrayDeque.html"><span>ArrayDeque</span></a></td>
|
|
245
221
|
<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/DirectedGraph.html"><span>DirectedGraph</span></a></td>
|
|
246
223
|
</tr>
|
|
247
224
|
<tr>
|
|
248
|
-
<td>
|
|
225
|
+
<td>Undirected Graph</td>
|
|
249
226
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
250
|
-
<td></td>
|
|
251
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
|
|
252
227
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
228
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
|
|
253
229
|
</tr>
|
|
254
|
-
|
|
255
|
-
[//]: # (<tr>)
|
|
256
|
-
|
|
257
|
-
[//]: # (<td>Hash</td>)
|
|
258
|
-
|
|
259
|
-
[//]: # (<td></td>)
|
|
260
|
-
|
|
261
|
-
[//]: # (<td></td>)
|
|
262
|
-
|
|
263
|
-
[//]: # (<td><a href="https://data-structure-typed-docs.vercel.app/classes/HashTable.html"><span>HashTable</span></a></td>)
|
|
264
|
-
|
|
265
|
-
[//]: # (<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>)
|
|
266
|
-
|
|
267
|
-
[//]: # (</tr>)
|
|
268
230
|
<tr>
|
|
269
|
-
<td>
|
|
270
|
-
<td></td>
|
|
271
|
-
<td></td>
|
|
272
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateSet.html"><span>CoordinateSet</span></a></td>
|
|
231
|
+
<td>Queue</td>
|
|
273
232
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
274
|
-
</tr>
|
|
275
|
-
<tr>
|
|
276
|
-
<td>Coordinate Map</td>
|
|
277
|
-
<td></td>
|
|
278
|
-
<td></td>
|
|
279
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateMap.html"><span>CoordinateMap</span></a></td>
|
|
280
233
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
234
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
|
|
281
235
|
</tr>
|
|
282
236
|
<tr>
|
|
283
|
-
<td>
|
|
237
|
+
<td>Deque</td>
|
|
284
238
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
285
239
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
286
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/
|
|
287
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
240
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Deque.html"><span>Deque</span></a></td>
|
|
288
241
|
</tr>
|
|
289
242
|
<tr>
|
|
290
|
-
<td>
|
|
291
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
243
|
+
<td>Linked List</td>
|
|
292
244
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
293
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
|
|
294
245
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
246
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
295
247
|
</tr>
|
|
296
248
|
<tr>
|
|
297
|
-
<td>
|
|
298
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
249
|
+
<td>Singly Linked List</td>
|
|
299
250
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
300
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
|
|
301
251
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
252
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
302
253
|
</tr>
|
|
303
254
|
<tr>
|
|
304
|
-
<td>
|
|
305
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
255
|
+
<td>Doubly Linked List</td>
|
|
306
256
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
307
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
|
|
308
257
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
258
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
|
|
309
259
|
</tr>
|
|
310
260
|
<tr>
|
|
311
|
-
<td>
|
|
261
|
+
<td>Stack</td>
|
|
312
262
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
313
|
-
<td></td>
|
|
314
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
|
|
315
263
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
264
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
|
|
316
265
|
</tr>
|
|
317
266
|
</tbody>
|
|
318
267
|
</table>
|
|
319
268
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
## Complexities
|
|
323
|
-
|
|
324
|
-
### performance of Big O
|
|
269
|
+
## Standard library data structure comparison
|
|
325
270
|
|
|
326
271
|
<table>
|
|
327
|
-
<thead>
|
|
328
|
-
<tr>
|
|
329
|
-
<th>
|
|
330
|
-
<th>
|
|
331
|
-
<th>
|
|
332
|
-
<th>
|
|
333
|
-
|
|
334
|
-
</
|
|
335
|
-
|
|
336
|
-
<
|
|
337
|
-
<
|
|
338
|
-
<td
|
|
339
|
-
<td>
|
|
340
|
-
<td>
|
|
341
|
-
|
|
342
|
-
<
|
|
343
|
-
|
|
344
|
-
<
|
|
345
|
-
<td
|
|
346
|
-
<td>
|
|
347
|
-
|
|
348
|
-
<
|
|
349
|
-
<td>
|
|
350
|
-
|
|
351
|
-
<
|
|
352
|
-
<td
|
|
353
|
-
|
|
354
|
-
<
|
|
355
|
-
<td>
|
|
356
|
-
<td>
|
|
357
|
-
|
|
358
|
-
<
|
|
359
|
-
|
|
360
|
-
<
|
|
361
|
-
<td>
|
|
362
|
-
<td>
|
|
363
|
-
<td>
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
<
|
|
367
|
-
<td>
|
|
368
|
-
<td
|
|
369
|
-
<td
|
|
370
|
-
<td
|
|
371
|
-
</tr>
|
|
372
|
-
<tr>
|
|
373
|
-
<td
|
|
374
|
-
<td
|
|
375
|
-
<td
|
|
376
|
-
<td
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
<
|
|
380
|
-
<td
|
|
381
|
-
<td
|
|
382
|
-
<td
|
|
383
|
-
|
|
384
|
-
<
|
|
385
|
-
|
|
386
|
-
|
|
272
|
+
<thead>
|
|
273
|
+
<tr>
|
|
274
|
+
<th>Data Structure Typed</th>
|
|
275
|
+
<th>C++ STL</th>
|
|
276
|
+
<th>java.util</th>
|
|
277
|
+
<th>Python collections</th>
|
|
278
|
+
</tr>
|
|
279
|
+
</thead>
|
|
280
|
+
<tbody>
|
|
281
|
+
<tr>
|
|
282
|
+
<td>Heap<E></td>
|
|
283
|
+
<td>priority_queue<T></td>
|
|
284
|
+
<td>PriorityQueue<E></td>
|
|
285
|
+
<td>heapq</td>
|
|
286
|
+
</tr>
|
|
287
|
+
<tr>
|
|
288
|
+
<td>Deque<E></td>
|
|
289
|
+
<td>deque<T></td>
|
|
290
|
+
<td>ArrayDeque<E></td>
|
|
291
|
+
<td>deque</td>
|
|
292
|
+
</tr>
|
|
293
|
+
<tr>
|
|
294
|
+
<td>Queue<E></td>
|
|
295
|
+
<td>queue<T></td>
|
|
296
|
+
<td>Queue<E></td>
|
|
297
|
+
<td>-</td>
|
|
298
|
+
</tr>
|
|
299
|
+
<tr>
|
|
300
|
+
<td>HashMap<K, V></td>
|
|
301
|
+
<td>unordered_map<K, V></td>
|
|
302
|
+
<td>HashMap<K, V></td>
|
|
303
|
+
<td>defaultdict</td>
|
|
304
|
+
</tr>
|
|
305
|
+
<tr>
|
|
306
|
+
<td>DoublyLinkedList<E></td>
|
|
307
|
+
<td>list<T></td>
|
|
308
|
+
<td>LinkedList<E></td>
|
|
309
|
+
<td>-</td>
|
|
310
|
+
</tr>
|
|
311
|
+
<tr>
|
|
312
|
+
<td>SinglyLinkedList<E></td>
|
|
313
|
+
<td>-</td>
|
|
314
|
+
<td>-</td>
|
|
315
|
+
<td>-</td>
|
|
316
|
+
</tr>
|
|
317
|
+
<tr>
|
|
318
|
+
<td>BinaryTree<K, V></td>
|
|
319
|
+
<td>-</td>
|
|
320
|
+
<td>-</td>
|
|
321
|
+
<td>-</td>
|
|
322
|
+
</tr>
|
|
323
|
+
<tr>
|
|
324
|
+
<td>BST<K, V></td>
|
|
325
|
+
<td>-</td>
|
|
326
|
+
<td>-</td>
|
|
327
|
+
<td>-</td>
|
|
328
|
+
</tr>
|
|
329
|
+
<tr>
|
|
330
|
+
<td>RedBlackTree<E></td>
|
|
331
|
+
<td>set<T></td>
|
|
332
|
+
<td>TreeSet<E></td>
|
|
333
|
+
<td>-</td>
|
|
334
|
+
</tr>
|
|
335
|
+
<tr>
|
|
336
|
+
<td>RedBlackTree<K, V></td>
|
|
337
|
+
<td>map<K, V></td>
|
|
338
|
+
<td>TreeMap<K, V></td>
|
|
339
|
+
<td>-</td>
|
|
340
|
+
</tr>
|
|
341
|
+
<tr>
|
|
342
|
+
<td>TreeMultimap<K, V></td>
|
|
343
|
+
<td>multimap<K, V></td>
|
|
344
|
+
<td>-</td>
|
|
345
|
+
<td>-</td>
|
|
346
|
+
</tr>
|
|
347
|
+
<tr>
|
|
348
|
+
<td>-</td>
|
|
349
|
+
<td>multiset<T></td>
|
|
350
|
+
<td>-</td>
|
|
351
|
+
<td>-</td>
|
|
352
|
+
</tr>
|
|
353
|
+
<tr>
|
|
354
|
+
<td>Trie</td>
|
|
355
|
+
<td>-</td>
|
|
356
|
+
<td>-</td>
|
|
357
|
+
<td>-</td>
|
|
358
|
+
</tr>
|
|
359
|
+
<tr>
|
|
360
|
+
<td>DirectedGraph<V, E></td>
|
|
361
|
+
<td>-</td>
|
|
362
|
+
<td>-</td>
|
|
363
|
+
<td>-</td>
|
|
364
|
+
</tr>
|
|
365
|
+
<tr>
|
|
366
|
+
<td>UndirectedGraph<V, E></td>
|
|
367
|
+
<td>-</td>
|
|
368
|
+
<td>-</td>
|
|
369
|
+
<td>-</td>
|
|
370
|
+
</tr>
|
|
371
|
+
<tr>
|
|
372
|
+
<td>PriorityQueue<E></td>
|
|
373
|
+
<td>priority_queue<T></td>
|
|
374
|
+
<td>PriorityQueue<E></td>
|
|
375
|
+
<td>-</td>
|
|
376
|
+
</tr>
|
|
377
|
+
<tr>
|
|
378
|
+
<td>Array<E></td>
|
|
379
|
+
<td>vector<T></td>
|
|
380
|
+
<td>ArrayList<E></td>
|
|
381
|
+
<td>list</td>
|
|
382
|
+
</tr>
|
|
383
|
+
<tr>
|
|
384
|
+
<td>Stack<E></td>
|
|
385
|
+
<td>stack<T></td>
|
|
386
|
+
<td>Stack<E></td>
|
|
387
|
+
<td>-</td>
|
|
388
|
+
</tr>
|
|
389
|
+
<tr>
|
|
390
|
+
<td>Set<E></td>
|
|
391
|
+
<td>-</td>
|
|
392
|
+
<td>HashSet<E></td>
|
|
393
|
+
<td>set</td>
|
|
394
|
+
</tr>
|
|
395
|
+
<tr>
|
|
396
|
+
<td>Map<K, V></td>
|
|
397
|
+
<td>-</td>
|
|
398
|
+
<td>HashMap<K, V></td>
|
|
399
|
+
<td>dict</td>
|
|
400
|
+
</tr>
|
|
401
|
+
<tr>
|
|
402
|
+
<td>-</td>
|
|
403
|
+
<td>unordered_set<T></td>
|
|
404
|
+
<td>HashSet<E></td>
|
|
405
|
+
<td>-</td>
|
|
406
|
+
</tr>
|
|
407
|
+
<tr>
|
|
408
|
+
<td>Map<K, V></td>
|
|
409
|
+
<td>-</td>
|
|
410
|
+
<td>-</td>
|
|
411
|
+
<td>OrderedDict</td>
|
|
412
|
+
</tr>
|
|
413
|
+
<tr>
|
|
414
|
+
<td>-</td>
|
|
415
|
+
<td>unordered_multiset</td>
|
|
416
|
+
<td>-</td>
|
|
417
|
+
<td>Counter</td>
|
|
418
|
+
</tr>
|
|
419
|
+
<tr>
|
|
420
|
+
<td>-</td>
|
|
421
|
+
<td>-</td>
|
|
422
|
+
<td>LinkedHashSet<E></td>
|
|
423
|
+
<td>-</td>
|
|
424
|
+
</tr>
|
|
425
|
+
<tr>
|
|
426
|
+
<td>HashMap<K, V></td>
|
|
427
|
+
<td>-</td>
|
|
428
|
+
<td>LinkedHashMap<K, V></td>
|
|
429
|
+
<td>-</td>
|
|
430
|
+
</tr>
|
|
431
|
+
<tr>
|
|
432
|
+
<td>-</td>
|
|
433
|
+
<td>unordered_multimap<K, V></td>
|
|
434
|
+
<td>-</td>
|
|
435
|
+
<td>-</td>
|
|
436
|
+
</tr>
|
|
437
|
+
<tr>
|
|
438
|
+
<td>-</td>
|
|
439
|
+
<td>bitset<N></td>
|
|
440
|
+
<td>-</td>
|
|
441
|
+
<td>-</td>
|
|
442
|
+
</tr>
|
|
443
|
+
</tbody>
|
|
387
444
|
</table>
|
|
388
445
|
|
|
389
|
-
|
|
446
|
+
## Benchmark
|
|
447
|
+
|
|
448
|
+
[//]: # (No deletion!!! Start of Replace Section)
|
|
449
|
+
<div class="json-to-html-collapse clearfix 0">
|
|
450
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>avl-tree</span></div>
|
|
451
|
+
<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>
|
|
452
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
453
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>binary-tree</span></div>
|
|
454
|
+
<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>
|
|
455
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
456
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>bst</span></div>
|
|
457
|
+
<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>
|
|
458
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
459
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>rb-tree</span></div>
|
|
460
|
+
<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>
|
|
461
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
462
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>comparison</span></div>
|
|
463
|
+
<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>
|
|
464
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
465
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>directed-graph</span></div>
|
|
466
|
+
<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>
|
|
467
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
468
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>hash-map</span></div>
|
|
469
|
+
<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>
|
|
470
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
471
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>heap</span></div>
|
|
472
|
+
<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>
|
|
473
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
474
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>doubly-linked-list</span></div>
|
|
475
|
+
<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>
|
|
476
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
477
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>singly-linked-list</span></div>
|
|
478
|
+
<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>
|
|
479
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
480
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>max-priority-queue</span></div>
|
|
481
|
+
<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>
|
|
482
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
483
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>priority-queue</span></div>
|
|
484
|
+
<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>
|
|
485
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
486
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>deque</span></div>
|
|
487
|
+
<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>
|
|
488
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
489
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>queue</span></div>
|
|
490
|
+
<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>
|
|
491
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
492
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>stack</span></div>
|
|
493
|
+
<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>
|
|
494
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
495
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>trie</span></div>
|
|
496
|
+
<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>
|
|
497
|
+
</div>
|
|
498
|
+
|
|
499
|
+
[//]: # (No deletion!!! End of Replace Section)
|
|
500
|
+
|
|
501
|
+
## Built-in classic algorithms
|
|
390
502
|
|
|
391
503
|
<table>
|
|
392
|
-
<thead>
|
|
393
|
-
<tr>
|
|
394
|
-
<th>
|
|
395
|
-
<th>
|
|
396
|
-
<th>
|
|
397
|
-
|
|
398
|
-
|
|
399
|
-
<
|
|
400
|
-
|
|
401
|
-
</
|
|
402
|
-
<
|
|
403
|
-
|
|
404
|
-
|
|
405
|
-
<td>
|
|
406
|
-
|
|
407
|
-
<
|
|
408
|
-
<td>
|
|
409
|
-
<td
|
|
410
|
-
|
|
411
|
-
|
|
412
|
-
<td
|
|
413
|
-
|
|
414
|
-
<
|
|
415
|
-
<td>
|
|
416
|
-
<td>
|
|
417
|
-
|
|
418
|
-
</
|
|
419
|
-
<
|
|
420
|
-
|
|
421
|
-
<
|
|
422
|
-
<td>
|
|
423
|
-
<td>1
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
</
|
|
427
|
-
|
|
428
|
-
<
|
|
429
|
-
<td>
|
|
430
|
-
<td>
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
<td
|
|
434
|
-
</tr>
|
|
435
|
-
<tr>
|
|
436
|
-
<td
|
|
437
|
-
<td
|
|
438
|
-
<td>
|
|
439
|
-
|
|
440
|
-
<
|
|
441
|
-
<td>
|
|
442
|
-
</
|
|
443
|
-
<
|
|
444
|
-
|
|
445
|
-
<
|
|
446
|
-
<td>
|
|
447
|
-
<td>
|
|
448
|
-
<td>
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
<
|
|
452
|
-
<td
|
|
453
|
-
<td>
|
|
454
|
-
|
|
455
|
-
<
|
|
456
|
-
<td>
|
|
457
|
-
<td
|
|
458
|
-
</
|
|
459
|
-
|
|
460
|
-
<
|
|
461
|
-
<td>
|
|
462
|
-
<td>
|
|
463
|
-
|
|
464
|
-
|
|
465
|
-
<td
|
|
466
|
-
</tr>
|
|
467
|
-
<tr>
|
|
468
|
-
<td
|
|
469
|
-
<td>
|
|
470
|
-
|
|
471
|
-
<td>
|
|
472
|
-
|
|
473
|
-
<
|
|
474
|
-
</
|
|
475
|
-
<
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
<td>
|
|
479
|
-
|
|
480
|
-
<
|
|
481
|
-
<td>
|
|
482
|
-
|
|
483
|
-
|
|
504
|
+
<thead>
|
|
505
|
+
<tr>
|
|
506
|
+
<th>Algorithm</th>
|
|
507
|
+
<th>Function Description</th>
|
|
508
|
+
<th>Iteration Type</th>
|
|
509
|
+
</tr>
|
|
510
|
+
</thead>
|
|
511
|
+
<tbody>
|
|
512
|
+
<tr>
|
|
513
|
+
<td>Binary Tree DFS</td>
|
|
514
|
+
<td>Traverse a binary tree in a depth-first manner, starting from the root node, first visiting the left subtree,
|
|
515
|
+
and then the right subtree, using recursion.
|
|
516
|
+
</td>
|
|
517
|
+
<td>Recursion + Iteration</td>
|
|
518
|
+
</tr>
|
|
519
|
+
<tr>
|
|
520
|
+
<td>Binary Tree BFS</td>
|
|
521
|
+
<td>Traverse a binary tree in a breadth-first manner, starting from the root node, visiting nodes level by level
|
|
522
|
+
from left to right.
|
|
523
|
+
</td>
|
|
524
|
+
<td>Iteration</td>
|
|
525
|
+
</tr>
|
|
526
|
+
<tr>
|
|
527
|
+
<td>Graph DFS</td>
|
|
528
|
+
<td>Traverse a graph in a depth-first manner, starting from a given node, exploring along one path as deeply as
|
|
529
|
+
possible, and backtracking to explore other paths. Used for finding connected components, paths, etc.
|
|
530
|
+
</td>
|
|
531
|
+
<td>Recursion + Iteration</td>
|
|
532
|
+
</tr>
|
|
533
|
+
<tr>
|
|
534
|
+
<td>Binary Tree Morris</td>
|
|
535
|
+
<td>Morris traversal is an in-order traversal algorithm for binary trees with O(1) space complexity. It allows tree
|
|
536
|
+
traversal without additional stack or recursion.
|
|
537
|
+
</td>
|
|
538
|
+
<td>Iteration</td>
|
|
539
|
+
</tr>
|
|
540
|
+
<tr>
|
|
541
|
+
<td>Graph BFS</td>
|
|
542
|
+
<td>Traverse a graph in a breadth-first manner, starting from a given node, first visiting nodes directly connected
|
|
543
|
+
to the starting node, and then expanding level by level. Used for finding shortest paths, etc.
|
|
544
|
+
</td>
|
|
545
|
+
<td>Recursion + Iteration</td>
|
|
546
|
+
</tr>
|
|
547
|
+
<tr>
|
|
548
|
+
<td>Graph Tarjan's Algorithm</td>
|
|
549
|
+
<td>Find strongly connected components in a graph, typically implemented using depth-first search.</td>
|
|
550
|
+
<td>Recursion</td>
|
|
551
|
+
</tr>
|
|
552
|
+
<tr>
|
|
553
|
+
<td>Graph Bellman-Ford Algorithm</td>
|
|
554
|
+
<td>Finding the shortest paths from a single source, can handle negative weight edges</td>
|
|
555
|
+
<td>Iteration</td>
|
|
556
|
+
</tr>
|
|
557
|
+
<tr>
|
|
558
|
+
<td>Graph Dijkstra's Algorithm</td>
|
|
559
|
+
<td>Finding the shortest paths from a single source, cannot handle negative weight edges</td>
|
|
560
|
+
<td>Iteration</td>
|
|
561
|
+
</tr>
|
|
562
|
+
<tr>
|
|
563
|
+
<td>Graph Floyd-Warshall Algorithm</td>
|
|
564
|
+
<td>Finding the shortest paths between all pairs of nodes</td>
|
|
565
|
+
<td>Iteration</td>
|
|
566
|
+
</tr>
|
|
567
|
+
<tr>
|
|
568
|
+
<td>Graph getCycles</td>
|
|
569
|
+
<td>Find all cycles in a graph or detect the presence of cycles.</td>
|
|
570
|
+
<td>Recursion</td>
|
|
571
|
+
</tr>
|
|
572
|
+
<tr>
|
|
573
|
+
<td>Graph getCutVertexes</td>
|
|
574
|
+
<td>Find cut vertices in a graph, which are nodes that, when removed, increase the number of connected components in
|
|
575
|
+
the graph.
|
|
576
|
+
</td>
|
|
577
|
+
<td>Recursion</td>
|
|
578
|
+
</tr>
|
|
579
|
+
<tr>
|
|
580
|
+
<td>Graph getSCCs</td>
|
|
581
|
+
<td>Find strongly connected components in a graph, which are subgraphs where any two nodes can reach each other.
|
|
582
|
+
</td>
|
|
583
|
+
<td>Recursion</td>
|
|
584
|
+
</tr>
|
|
585
|
+
<tr>
|
|
586
|
+
<td>Graph getBridges</td>
|
|
587
|
+
<td>Find bridges in a graph, which are edges that, when removed, increase the number of connected components in the
|
|
588
|
+
graph.
|
|
589
|
+
</td>
|
|
590
|
+
<td>Recursion</td>
|
|
591
|
+
</tr>
|
|
592
|
+
<tr>
|
|
593
|
+
<td>Graph topologicalSort</td>
|
|
594
|
+
<td>Perform topological sorting on a directed acyclic graph (DAG) to find a linear order of nodes such that all
|
|
595
|
+
directed edges go from earlier nodes to later nodes.
|
|
596
|
+
</td>
|
|
597
|
+
<td>Recursion</td>
|
|
598
|
+
</tr>
|
|
599
|
+
</tbody>
|
|
484
600
|
</table>
|
|
485
601
|
|
|
486
|
-
|
|
487
|
-
|
|
602
|
+
## Software Engineering Design Standards
|
|
488
603
|
<table>
|
|
489
|
-
<
|
|
490
|
-
<
|
|
491
|
-
<th>
|
|
492
|
-
|
|
493
|
-
<
|
|
494
|
-
<
|
|
495
|
-
<
|
|
496
|
-
|
|
497
|
-
<
|
|
498
|
-
</
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
<tr>
|
|
502
|
-
<td
|
|
503
|
-
<td>
|
|
504
|
-
|
|
505
|
-
<
|
|
506
|
-
<td>
|
|
507
|
-
<td>
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
<
|
|
511
|
-
<td
|
|
512
|
-
|
|
513
|
-
<
|
|
514
|
-
<td>
|
|
515
|
-
<td>
|
|
516
|
-
|
|
517
|
-
<
|
|
518
|
-
</
|
|
519
|
-
<
|
|
520
|
-
|
|
521
|
-
<
|
|
522
|
-
<td>
|
|
523
|
-
<td>
|
|
524
|
-
|
|
525
|
-
<
|
|
526
|
-
<td
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
<
|
|
530
|
-
<td>
|
|
531
|
-
<td>
|
|
532
|
-
|
|
533
|
-
<td>1</td>
|
|
534
|
-
<td>No</td>
|
|
535
|
-
<td></td>
|
|
536
|
-
</tr>
|
|
537
|
-
<tr>
|
|
538
|
-
<td><strong>Merge sort</strong></td>
|
|
539
|
-
<td>n log(n)</td>
|
|
540
|
-
<td>n log(n)</td>
|
|
541
|
-
<td>n log(n)</td>
|
|
542
|
-
<td>n</td>
|
|
543
|
-
<td>Yes</td>
|
|
544
|
-
<td></td>
|
|
545
|
-
</tr>
|
|
546
|
-
<tr>
|
|
547
|
-
<td><strong>Quick sort</strong></td>
|
|
548
|
-
<td>n log(n)</td>
|
|
549
|
-
<td>n log(n)</td>
|
|
550
|
-
<td>n<sup>2</sup></td>
|
|
551
|
-
<td>log(n)</td>
|
|
552
|
-
<td>No</td>
|
|
553
|
-
<td>Quicksort is usually done in-place with O(log(n)) stack space</td>
|
|
554
|
-
</tr>
|
|
555
|
-
<tr>
|
|
556
|
-
<td><strong>Shell sort</strong></td>
|
|
557
|
-
<td>n log(n)</td>
|
|
558
|
-
<td>depends on gap sequence</td>
|
|
559
|
-
<td>n (log(n))<sup>2</sup></td>
|
|
560
|
-
<td>1</td>
|
|
561
|
-
<td>No</td>
|
|
562
|
-
<td></td>
|
|
563
|
-
</tr>
|
|
564
|
-
<tr>
|
|
565
|
-
<td><strong>Counting sort</strong></td>
|
|
566
|
-
<td>n + r</td>
|
|
567
|
-
<td>n + r</td>
|
|
568
|
-
<td>n + r</td>
|
|
569
|
-
<td>n + r</td>
|
|
570
|
-
<td>Yes</td>
|
|
571
|
-
<td>r - biggest number in array</td>
|
|
572
|
-
</tr>
|
|
573
|
-
<tr>
|
|
574
|
-
<td><strong>Radix sort</strong></td>
|
|
575
|
-
<td>n * k</td>
|
|
576
|
-
<td>n * k</td>
|
|
577
|
-
<td>n * k</td>
|
|
578
|
-
<td>n + k</td>
|
|
579
|
-
<td>Yes</td>
|
|
580
|
-
<td>k - length of longest key</td>
|
|
581
|
-
</tr>
|
|
582
|
-
</tbody>
|
|
604
|
+
<tr>
|
|
605
|
+
<th>Principle</th>
|
|
606
|
+
<th>Description</th>
|
|
607
|
+
</tr>
|
|
608
|
+
<tr>
|
|
609
|
+
<td>Practicality</td>
|
|
610
|
+
<td>Follows ES6 and ESNext standards, offering unified and considerate optional parameters, and simplifies method names.</td>
|
|
611
|
+
</tr>
|
|
612
|
+
<tr>
|
|
613
|
+
<td>Extensibility</td>
|
|
614
|
+
<td>Adheres to OOP (Object-Oriented Programming) principles, allowing inheritance for all data structures.</td>
|
|
615
|
+
</tr>
|
|
616
|
+
<tr>
|
|
617
|
+
<td>Modularization</td>
|
|
618
|
+
<td>Includes data structure modularization and independent NPM packages.</td>
|
|
619
|
+
</tr>
|
|
620
|
+
<tr>
|
|
621
|
+
<td>Efficiency</td>
|
|
622
|
+
<td>All methods provide time and space complexity, comparable to native JS performance.</td>
|
|
623
|
+
</tr>
|
|
624
|
+
<tr>
|
|
625
|
+
<td>Maintainability</td>
|
|
626
|
+
<td>Follows open-source community development standards, complete documentation, continuous integration, and adheres to TDD (Test-Driven Development) patterns.</td>
|
|
627
|
+
</tr>
|
|
628
|
+
<tr>
|
|
629
|
+
<td>Testability</td>
|
|
630
|
+
<td>Automated and customized unit testing, performance testing, and integration testing.</td>
|
|
631
|
+
</tr>
|
|
632
|
+
<tr>
|
|
633
|
+
<td>Portability</td>
|
|
634
|
+
<td>Plans for porting to Java, Python, and C++, currently achieved to 80%.</td>
|
|
635
|
+
</tr>
|
|
636
|
+
<tr>
|
|
637
|
+
<td>Reusability</td>
|
|
638
|
+
<td>Fully decoupled, minimized side effects, and adheres to OOP.</td>
|
|
639
|
+
</tr>
|
|
640
|
+
<tr>
|
|
641
|
+
<td>Security</td>
|
|
642
|
+
<td>Carefully designed security for member variables and methods. Read-write separation. Data structure software does not need to consider other security aspects.</td>
|
|
643
|
+
</tr>
|
|
644
|
+
<tr>
|
|
645
|
+
<td>Scalability</td>
|
|
646
|
+
<td>Data structure software does not involve load issues.</td>
|
|
647
|
+
</tr>
|
|
583
648
|
</table>
|
|
584
649
|
|
|
585
|
-

|
|
586
|
-
|
|
587
|
-

|
|
588
|
-
|
|
589
|
-

|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
593
650
|
|
|
594
651
|
|
|
595
652
|
|