linked-list-typed 1.47.3 → 1.47.5

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