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