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

|
|
579
|
-
|
|
580
|
-

|
|
581
|
-
|
|
582
|
-

|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
643
|
|
|
588
644
|
|