avl-tree-typed 1.47.3 → 1.47.4

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 (2) hide show
  1. package/README.md +410 -352
  2. package/package.json +2 -2
package/README.md CHANGED
@@ -234,13 +234,14 @@ const lastBFSNodes = avlTree.BFS('node');
234
234
  lastBFSNodes[0].id // 12
235
235
  ```
236
236
 
237
+
237
238
  ## API docs & Examples
238
239
 
239
240
  [API Docs](https://data-structure-typed-docs.vercel.app)
240
241
 
241
- [Live Examples](https://data-structure-typed-examples.vercel.app)
242
+ [Live Examples](https://vivid-algorithm.vercel.app)
242
243
 
243
- <a href="https://github.com/zrwusa/data-structure-typed-examples" target="_blank">Examples Repository</a>
244
+ <a href="https://github.com/zrwusa/vivid-algorithm" target="_blank">Examples Repository</a>
244
245
 
245
246
  ## Data Structures
246
247
 
@@ -250,463 +251,520 @@ lastBFSNodes[0].id // 12
250
251
  <th>Data Structure</th>
251
252
  <th>Unit Test</th>
252
253
  <th>Performance Test</th>
253
- <th>API Documentation</th>
254
- <th>Implemented</th>
254
+ <th>API Docs</th>
255
255
  </tr>
256
256
  </thead>
257
257
  <tbody>
258
258
  <tr>
259
259
  <td>Binary Tree</td>
260
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
261
- </td>
262
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
263
- </td>
264
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
265
260
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
261
+ <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
262
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
266
263
  </tr>
267
264
  <tr>
268
265
  <td>Binary Search Tree (BST)</td>
269
266
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
270
267
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
271
268
  <td><a href="https://data-structure-typed-docs.vercel.app/classes/BST.html"><span>BST</span></a></td>
272
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
273
269
  </tr>
274
270
  <tr>
275
271
  <td>AVL Tree</td>
276
272
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
277
273
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
278
274
  <td><a href="https://data-structure-typed-docs.vercel.app/classes/AVLTree.html"><span>AVLTree</span></a></td>
275
+ </tr>
276
+ <tr>
277
+ <td>Red Black Tree</td>
278
+ <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
279
279
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
280
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/RedBlackTree.html"><span>RedBlackTree</span></a></td>
280
281
  </tr>
281
282
  <tr>
282
283
  <td>Tree Multiset</td>
283
284
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
284
285
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
285
286
  <td><a href="https://data-structure-typed-docs.vercel.app/classes/TreeMultimap.html"><span>TreeMultimap</span></a></td>
286
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
287
287
  </tr>
288
288
  <tr>
289
289
  <td>Segment Tree</td>
290
- <td></td>
290
+ <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
291
291
  <td></td>
292
292
  <td><a href="https://data-structure-typed-docs.vercel.app/classes/SegmentTree.html"><span>SegmentTree</span></a></td>
293
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
294
293
  </tr>
295
294
  <tr>
296
295
  <td>Binary Indexed Tree</td>
297
296
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
298
297
  <td></td>
299
298
  <td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryIndexedTree.html"><span>BinaryIndexedTree</span></a></td>
300
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
301
- </tr>
302
- <tr>
303
- <td>Graph</td>
304
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
305
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
306
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/AbstractGraph.html"><span>AbstractGraph</span></a></td>
307
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
308
- </tr>
309
- <tr>
310
- <td>Directed Graph</td>
311
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
312
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
313
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/DirectedGraph.html"><span>DirectedGraph</span></a></td>
314
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
315
299
  </tr>
316
300
  <tr>
317
- <td>Undirected Graph</td>
318
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
301
+ <td>Heap</td>
319
302
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
320
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
321
303
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
304
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/Heap.html"><span>Heap</span></a></td>
322
305
  </tr>
323
306
  <tr>
324
- <td>Linked List</td>
325
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
307
+ <td>Priority Queue</td>
326
308
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
327
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
328
309
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
310
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
329
311
  </tr>
330
312
  <tr>
331
- <td>Singly Linked List</td>
332
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
313
+ <td>Max Priority Queue</td>
333
314
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
334
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
335
315
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
316
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
336
317
  </tr>
337
318
  <tr>
338
- <td>Doubly Linked List</td>
339
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
319
+ <td>Min Priority Queue</td>
340
320
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
341
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
342
321
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
322
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
343
323
  </tr>
344
324
  <tr>
345
- <td>Queue</td>
346
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
325
+ <td>Trie</td>
347
326
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
348
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
349
327
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
328
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
350
329
  </tr>
351
330
  <tr>
352
- <td>Object Deque</td>
353
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
331
+ <td>Graph</td>
354
332
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
355
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/ObjectDeque.html"><span>ObjectDeque</span></a></td>
356
333
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
334
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/AbstractGraph.html"><span>AbstractGraph</span></a></td>
357
335
  </tr>
358
336
  <tr>
359
- <td>Array Deque</td>
360
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
337
+ <td>Directed Graph</td>
361
338
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
362
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/ArrayDeque.html"><span>ArrayDeque</span></a></td>
363
339
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
340
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/DirectedGraph.html"><span>DirectedGraph</span></a></td>
364
341
  </tr>
365
342
  <tr>
366
- <td>Stack</td>
343
+ <td>Undirected Graph</td>
367
344
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
368
- <td></td>
369
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
370
345
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
346
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
371
347
  </tr>
372
-
373
- [//]: # (<tr>)
374
-
375
- [//]: # (<td>Hash</td>)
376
-
377
- [//]: # (<td></td>)
378
-
379
- [//]: # (<td></td>)
380
-
381
- [//]: # (<td><a href="https://data-structure-typed-docs.vercel.app/classes/HashTable.html"><span>HashTable</span></a></td>)
382
-
383
- [//]: # (<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>)
384
-
385
- [//]: # (</tr>)
386
348
  <tr>
387
- <td>Coordinate Set</td>
388
- <td></td>
389
- <td></td>
390
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateSet.html"><span>CoordinateSet</span></a></td>
349
+ <td>Queue</td>
391
350
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
392
- </tr>
393
- <tr>
394
- <td>Coordinate Map</td>
395
- <td></td>
396
- <td></td>
397
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateMap.html"><span>CoordinateMap</span></a></td>
398
351
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
352
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
399
353
  </tr>
400
354
  <tr>
401
- <td>Heap</td>
402
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
355
+ <td>Deque</td>
403
356
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
404
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/Heap.html"><span>Heap</span></a></td>
405
357
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
358
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/Deque.html"><span>Deque</span></a></td>
406
359
  </tr>
407
360
  <tr>
408
- <td>Priority Queue</td>
409
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
361
+ <td>Linked List</td>
410
362
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
411
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
412
363
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
364
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
413
365
  </tr>
414
366
  <tr>
415
- <td>Max Priority Queue</td>
416
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
367
+ <td>Singly Linked List</td>
417
368
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
418
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
419
369
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
370
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
420
371
  </tr>
421
372
  <tr>
422
- <td>Min Priority Queue</td>
423
- <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
373
+ <td>Doubly Linked List</td>
424
374
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
425
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
426
375
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
376
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
427
377
  </tr>
428
378
  <tr>
429
- <td>Trie</td>
379
+ <td>Stack</td>
430
380
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
431
- <td></td>
432
- <td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
433
381
  <td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
382
+ <td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
434
383
  </tr>
435
384
  </tbody>
436
385
  </table>
437
386
 
438
- # Why
439
-
440
- ## Complexities
441
-
442
- ### performance of Big O
387
+ ## Standard library data structure comparison
443
388
 
444
389
  <table>
445
- <thead>
446
- <tr>
447
- <th>Big O Notation</th>
448
- <th>Type</th>
449
- <th>Computations for 10 elements</th>
450
- <th>Computations for 100 elements</th>
451
- <th>Computations for 1000 elements</th>
452
- </tr>
453
- </thead>
454
- <tbody>
455
- <tr>
456
- <td><strong>O(1)</strong></td>
457
- <td>Constant</td>
458
- <td>1</td>
459
- <td>1</td>
460
- <td>1</td>
461
- </tr>
462
- <tr>
463
- <td><strong>O(log N)</strong></td>
464
- <td>Logarithmic</td>
465
- <td>3</td>
466
- <td>6</td>
467
- <td>9</td>
468
- </tr>
469
- <tr>
470
- <td><strong>O(N)</strong></td>
471
- <td>Linear</td>
472
- <td>10</td>
473
- <td>100</td>
474
- <td>1000</td>
475
- </tr>
476
- <tr>
477
- <td><strong>O(N log N)</strong></td>
478
- <td>n log(n)</td>
479
- <td>30</td>
480
- <td>600</td>
481
- <td>9000</td>
482
- </tr>
483
- <tr>
484
- <td><strong>O(N^2)</strong></td>
485
- <td>Quadratic</td>
486
- <td>100</td>
487
- <td>10000</td>
488
- <td>1000000</td>
489
- </tr>
490
- <tr>
491
- <td><strong>O(2^N)</strong></td>
492
- <td>Exponential</td>
493
- <td>1024</td>
494
- <td>1.26e+29</td>
495
- <td>1.07e+301</td>
496
- </tr>
497
- <tr>
498
- <td><strong>O(N!)</strong></td>
499
- <td>Factorial</td>
500
- <td>3628800</td>
501
- <td>9.3e+157</td>
502
- <td>4.02e+2567</td>
503
- </tr>
504
- </tbody>
390
+ <thead>
391
+ <tr>
392
+ <th>Data Structure Typed</th>
393
+ <th>C++ STL</th>
394
+ <th>java.util</th>
395
+ <th>Python collections</th>
396
+ </tr>
397
+ </thead>
398
+ <tbody>
399
+ <tr>
400
+ <td>Heap&lt;E&gt;</td>
401
+ <td>priority_queue&lt;T&gt;</td>
402
+ <td>PriorityQueue&lt;E&gt;</td>
403
+ <td>heapq</td>
404
+ </tr>
405
+ <tr>
406
+ <td>Deque&lt;E&gt;</td>
407
+ <td>deque&lt;T&gt;</td>
408
+ <td>ArrayDeque&lt;E&gt;</td>
409
+ <td>deque</td>
410
+ </tr>
411
+ <tr>
412
+ <td>Queue&lt;E&gt;</td>
413
+ <td>queue&lt;T&gt;</td>
414
+ <td>Queue&lt;E&gt;</td>
415
+ <td>-</td>
416
+ </tr>
417
+ <tr>
418
+ <td>HashMap&lt;K, V&gt;</td>
419
+ <td>unordered_map&lt;K, V&gt;</td>
420
+ <td>HashMap&lt;K, V&gt;</td>
421
+ <td>defaultdict</td>
422
+ </tr>
423
+ <tr>
424
+ <td>DoublyLinkedList&lt;E&gt;</td>
425
+ <td>list&lt;T&gt;</td>
426
+ <td>LinkedList&lt;E&gt;</td>
427
+ <td>-</td>
428
+ </tr>
429
+ <tr>
430
+ <td>SinglyLinkedList&lt;E&gt;</td>
431
+ <td>-</td>
432
+ <td>-</td>
433
+ <td>-</td>
434
+ </tr>
435
+ <tr>
436
+ <td>BinaryTree&lt;K, V&gt;</td>
437
+ <td>-</td>
438
+ <td>-</td>
439
+ <td>-</td>
440
+ </tr>
441
+ <tr>
442
+ <td>BST&lt;K, V&gt;</td>
443
+ <td>-</td>
444
+ <td>-</td>
445
+ <td>-</td>
446
+ </tr>
447
+ <tr>
448
+ <td>RedBlackTree&lt;E&gt;</td>
449
+ <td>set&lt;T&gt;</td>
450
+ <td>TreeSet&lt;E&gt;</td>
451
+ <td>-</td>
452
+ </tr>
453
+ <tr>
454
+ <td>RedBlackTree&lt;K, V&gt;</td>
455
+ <td>map&lt;K, V&gt;</td>
456
+ <td>TreeMap&lt;K, V&gt;</td>
457
+ <td>-</td>
458
+ </tr>
459
+ <tr>
460
+ <td>TreeMultimap&lt;K, V&gt;</td>
461
+ <td>multimap&lt;K, V&gt;</td>
462
+ <td>-</td>
463
+ <td>-</td>
464
+ </tr>
465
+ <tr>
466
+ <td>-</td>
467
+ <td>multiset&lt;T&gt;</td>
468
+ <td>-</td>
469
+ <td>-</td>
470
+ </tr>
471
+ <tr>
472
+ <td>Trie</td>
473
+ <td>-</td>
474
+ <td>-</td>
475
+ <td>-</td>
476
+ </tr>
477
+ <tr>
478
+ <td>DirectedGraph&lt;V, E&gt;</td>
479
+ <td>-</td>
480
+ <td>-</td>
481
+ <td>-</td>
482
+ </tr>
483
+ <tr>
484
+ <td>UndirectedGraph&lt;V, E&gt;</td>
485
+ <td>-</td>
486
+ <td>-</td>
487
+ <td>-</td>
488
+ </tr>
489
+ <tr>
490
+ <td>PriorityQueue&lt;E&gt;</td>
491
+ <td>priority_queue&lt;T&gt;</td>
492
+ <td>PriorityQueue&lt;E&gt;</td>
493
+ <td>-</td>
494
+ </tr>
495
+ <tr>
496
+ <td>Array&lt;E&gt;</td>
497
+ <td>vector&lt;T&gt;</td>
498
+ <td>ArrayList&lt;E&gt;</td>
499
+ <td>list</td>
500
+ </tr>
501
+ <tr>
502
+ <td>Stack&lt;E&gt;</td>
503
+ <td>stack&lt;T&gt;</td>
504
+ <td>Stack&lt;E&gt;</td>
505
+ <td>-</td>
506
+ </tr>
507
+ <tr>
508
+ <td>Set&lt;E&gt;</td>
509
+ <td>-</td>
510
+ <td>HashSet&lt;E&gt;</td>
511
+ <td>set</td>
512
+ </tr>
513
+ <tr>
514
+ <td>Map&lt;K, V&gt;</td>
515
+ <td>-</td>
516
+ <td>HashMap&lt;K, V&gt;</td>
517
+ <td>dict</td>
518
+ </tr>
519
+ <tr>
520
+ <td>-</td>
521
+ <td>unordered_set&lt;T&gt;</td>
522
+ <td>HashSet&lt;E&gt;</td>
523
+ <td>-</td>
524
+ </tr>
525
+ <tr>
526
+ <td>Map&lt;K, V&gt;</td>
527
+ <td>-</td>
528
+ <td>-</td>
529
+ <td>OrderedDict</td>
530
+ </tr>
531
+ <tr>
532
+ <td>-</td>
533
+ <td>unordered_multiset</td>
534
+ <td>-</td>
535
+ <td>Counter</td>
536
+ </tr>
537
+ <tr>
538
+ <td>-</td>
539
+ <td>-</td>
540
+ <td>LinkedHashSet&lt;E&gt;</td>
541
+ <td>-</td>
542
+ </tr>
543
+ <tr>
544
+ <td>HashMap&lt;K, V&gt;</td>
545
+ <td>-</td>
546
+ <td>LinkedHashMap&lt;K, V&gt;</td>
547
+ <td>-</td>
548
+ </tr>
549
+ <tr>
550
+ <td>-</td>
551
+ <td>unordered_multimap&lt;K, V&gt;</td>
552
+ <td>-</td>
553
+ <td>-</td>
554
+ </tr>
555
+ <tr>
556
+ <td>-</td>
557
+ <td>bitset&lt;N&gt;</td>
558
+ <td>-</td>
559
+ <td>-</td>
560
+ </tr>
561
+ </tbody>
505
562
  </table>
506
563
 
507
- ### Data Structure Complexity
564
+ ## Benchmark
565
+
566
+ [//]: # (No deletion!!! Start of Replace Section)
567
+ <div class="json-to-html-collapse clearfix 0">
568
+ <div class='collapsible level0' ><span class='json-to-html-label'>avl-tree</span></div>
569
+ <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>
570
+ </div><div class="json-to-html-collapse clearfix 0">
571
+ <div class='collapsible level0' ><span class='json-to-html-label'>binary-tree</span></div>
572
+ <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>
573
+ </div><div class="json-to-html-collapse clearfix 0">
574
+ <div class='collapsible level0' ><span class='json-to-html-label'>bst</span></div>
575
+ <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>
576
+ </div><div class="json-to-html-collapse clearfix 0">
577
+ <div class='collapsible level0' ><span class='json-to-html-label'>rb-tree</span></div>
578
+ <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>
579
+ </div><div class="json-to-html-collapse clearfix 0">
580
+ <div class='collapsible level0' ><span class='json-to-html-label'>comparison</span></div>
581
+ <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>
582
+ </div><div class="json-to-html-collapse clearfix 0">
583
+ <div class='collapsible level0' ><span class='json-to-html-label'>directed-graph</span></div>
584
+ <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>
585
+ </div><div class="json-to-html-collapse clearfix 0">
586
+ <div class='collapsible level0' ><span class='json-to-html-label'>hash-map</span></div>
587
+ <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>
588
+ </div><div class="json-to-html-collapse clearfix 0">
589
+ <div class='collapsible level0' ><span class='json-to-html-label'>heap</span></div>
590
+ <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>
591
+ </div><div class="json-to-html-collapse clearfix 0">
592
+ <div class='collapsible level0' ><span class='json-to-html-label'>doubly-linked-list</span></div>
593
+ <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>
594
+ </div><div class="json-to-html-collapse clearfix 0">
595
+ <div class='collapsible level0' ><span class='json-to-html-label'>singly-linked-list</span></div>
596
+ <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>
597
+ </div><div class="json-to-html-collapse clearfix 0">
598
+ <div class='collapsible level0' ><span class='json-to-html-label'>max-priority-queue</span></div>
599
+ <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>
600
+ </div><div class="json-to-html-collapse clearfix 0">
601
+ <div class='collapsible level0' ><span class='json-to-html-label'>priority-queue</span></div>
602
+ <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>
603
+ </div><div class="json-to-html-collapse clearfix 0">
604
+ <div class='collapsible level0' ><span class='json-to-html-label'>deque</span></div>
605
+ <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>
606
+ </div><div class="json-to-html-collapse clearfix 0">
607
+ <div class='collapsible level0' ><span class='json-to-html-label'>queue</span></div>
608
+ <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>
609
+ </div><div class="json-to-html-collapse clearfix 0">
610
+ <div class='collapsible level0' ><span class='json-to-html-label'>stack</span></div>
611
+ <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>
612
+ </div><div class="json-to-html-collapse clearfix 0">
613
+ <div class='collapsible level0' ><span class='json-to-html-label'>trie</span></div>
614
+ <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>
615
+ </div>
616
+
617
+ [//]: # (No deletion!!! End of Replace Section)
618
+
619
+ ## Built-in classic algorithms
508
620
 
509
621
  <table>
510
- <thead>
511
- <tr>
512
- <th>Data Structure</th>
513
- <th>Access</th>
514
- <th>Search</th>
515
- <th>Insertion</th>
516
- <th>Deletion</th>
517
- <th>Comments</th>
518
- </tr>
519
- </thead>
520
- <tbody>
521
- <tr>
522
- <td><strong>Array</strong></td>
523
- <td>1</td>
524
- <td>n</td>
525
- <td>n</td>
526
- <td>n</td>
527
- <td></td>
528
- </tr>
529
- <tr>
530
- <td><strong>Stack</strong></td>
531
- <td>n</td>
532
- <td>n</td>
533
- <td>1</td>
534
- <td>1</td>
535
- <td></td>
536
- </tr>
537
- <tr>
538
- <td><strong>Queue</strong></td>
539
- <td>n</td>
540
- <td>n</td>
541
- <td>1</td>
542
- <td>1</td>
543
- <td></td>
544
- </tr>
545
- <tr>
546
- <td><strong>Linked List</strong></td>
547
- <td>n</td>
548
- <td>n</td>
549
- <td>1</td>
550
- <td>n</td>
551
- <td></td>
552
- </tr>
553
- <tr>
554
- <td><strong>Hash Table</strong></td>
555
- <td>-</td>
556
- <td>n</td>
557
- <td>n</td>
558
- <td>n</td>
559
- <td>In case of perfect hash function costs would be O(1)</td>
560
- </tr>
561
- <tr>
562
- <td><strong>Binary Search Tree</strong></td>
563
- <td>n</td>
564
- <td>n</td>
565
- <td>n</td>
566
- <td>n</td>
567
- <td>In case of balanced tree costs would be O(log(n))</td>
568
- </tr>
569
- <tr>
570
- <td><strong>B-Tree</strong></td>
571
- <td>log(n)</td>
572
- <td>log(n)</td>
573
- <td>log(n)</td>
574
- <td>log(n)</td>
575
- <td></td>
576
- </tr>
577
- <tr>
578
- <td><strong>Red-Black Tree</strong></td>
579
- <td>log(n)</td>
580
- <td>log(n)</td>
581
- <td>log(n)</td>
582
- <td>log(n)</td>
583
- <td></td>
584
- </tr>
585
- <tr>
586
- <td><strong>AVL Tree</strong></td>
587
- <td>log(n)</td>
588
- <td>log(n)</td>
589
- <td>log(n)</td>
590
- <td>log(n)</td>
591
- <td></td>
592
- </tr>
593
- <tr>
594
- <td><strong>Bloom Filter</strong></td>
595
- <td>-</td>
596
- <td>1</td>
597
- <td>1</td>
598
- <td>-</td>
599
- <td>False positives are possible while searching</td>
600
- </tr>
601
- </tbody>
622
+ <thead>
623
+ <tr>
624
+ <th>Algorithm</th>
625
+ <th>Function Description</th>
626
+ <th>Iteration Type</th>
627
+ </tr>
628
+ </thead>
629
+ <tbody>
630
+ <tr>
631
+ <td>Binary Tree DFS</td>
632
+ <td>Traverse a binary tree in a depth-first manner, starting from the root node, first visiting the left subtree,
633
+ and then the right subtree, using recursion.
634
+ </td>
635
+ <td>Recursion + Iteration</td>
636
+ </tr>
637
+ <tr>
638
+ <td>Binary Tree BFS</td>
639
+ <td>Traverse a binary tree in a breadth-first manner, starting from the root node, visiting nodes level by level
640
+ from left to right.
641
+ </td>
642
+ <td>Iteration</td>
643
+ </tr>
644
+ <tr>
645
+ <td>Graph DFS</td>
646
+ <td>Traverse a graph in a depth-first manner, starting from a given node, exploring along one path as deeply as
647
+ possible, and backtracking to explore other paths. Used for finding connected components, paths, etc.
648
+ </td>
649
+ <td>Recursion + Iteration</td>
650
+ </tr>
651
+ <tr>
652
+ <td>Binary Tree Morris</td>
653
+ <td>Morris traversal is an in-order traversal algorithm for binary trees with O(1) space complexity. It allows tree
654
+ traversal without additional stack or recursion.
655
+ </td>
656
+ <td>Iteration</td>
657
+ </tr>
658
+ <tr>
659
+ <td>Graph BFS</td>
660
+ <td>Traverse a graph in a breadth-first manner, starting from a given node, first visiting nodes directly connected
661
+ to the starting node, and then expanding level by level. Used for finding shortest paths, etc.
662
+ </td>
663
+ <td>Recursion + Iteration</td>
664
+ </tr>
665
+ <tr>
666
+ <td>Graph Tarjan's Algorithm</td>
667
+ <td>Find strongly connected components in a graph, typically implemented using depth-first search.</td>
668
+ <td>Recursion</td>
669
+ </tr>
670
+ <tr>
671
+ <td>Graph Bellman-Ford Algorithm</td>
672
+ <td>Finding the shortest paths from a single source, can handle negative weight edges</td>
673
+ <td>Iteration</td>
674
+ </tr>
675
+ <tr>
676
+ <td>Graph Dijkstra's Algorithm</td>
677
+ <td>Finding the shortest paths from a single source, cannot handle negative weight edges</td>
678
+ <td>Iteration</td>
679
+ </tr>
680
+ <tr>
681
+ <td>Graph Floyd-Warshall Algorithm</td>
682
+ <td>Finding the shortest paths between all pairs of nodes</td>
683
+ <td>Iteration</td>
684
+ </tr>
685
+ <tr>
686
+ <td>Graph getCycles</td>
687
+ <td>Find all cycles in a graph or detect the presence of cycles.</td>
688
+ <td>Recursion</td>
689
+ </tr>
690
+ <tr>
691
+ <td>Graph getCutVertexes</td>
692
+ <td>Find cut vertices in a graph, which are nodes that, when removed, increase the number of connected components in
693
+ the graph.
694
+ </td>
695
+ <td>Recursion</td>
696
+ </tr>
697
+ <tr>
698
+ <td>Graph getSCCs</td>
699
+ <td>Find strongly connected components in a graph, which are subgraphs where any two nodes can reach each other.
700
+ </td>
701
+ <td>Recursion</td>
702
+ </tr>
703
+ <tr>
704
+ <td>Graph getBridges</td>
705
+ <td>Find bridges in a graph, which are edges that, when removed, increase the number of connected components in the
706
+ graph.
707
+ </td>
708
+ <td>Recursion</td>
709
+ </tr>
710
+ <tr>
711
+ <td>Graph topologicalSort</td>
712
+ <td>Perform topological sorting on a directed acyclic graph (DAG) to find a linear order of nodes such that all
713
+ directed edges go from earlier nodes to later nodes.
714
+ </td>
715
+ <td>Recursion</td>
716
+ </tr>
717
+ </tbody>
602
718
  </table>
603
719
 
604
- ### Sorting Complexity
605
-
720
+ ## Software Engineering Design Standards
606
721
  <table>
607
- <thead>
608
- <tr>
609
- <th>Name</th>
610
- <th>Best</th>
611
- <th>Average</th>
612
- <th>Worst</th>
613
- <th>Memory</th>
614
- <th>Stable</th>
615
- <th>Comments</th>
616
- </tr>
617
- </thead>
618
- <tbody>
619
- <tr>
620
- <td><strong>Bubble sort</strong></td>
621
- <td>n</td>
622
- <td>n<sup>2</sup></td>
623
- <td>n<sup>2</sup></td>
624
- <td>1</td>
625
- <td>Yes</td>
626
- <td></td>
627
- </tr>
628
- <tr>
629
- <td><strong>Insertion sort</strong></td>
630
- <td>n</td>
631
- <td>n<sup>2</sup></td>
632
- <td>n<sup>2</sup></td>
633
- <td>1</td>
634
- <td>Yes</td>
635
- <td></td>
636
- </tr>
637
- <tr>
638
- <td><strong>Selection sort</strong></td>
639
- <td>n<sup>2</sup></td>
640
- <td>n<sup>2</sup></td>
641
- <td>n<sup>2</sup></td>
642
- <td>1</td>
643
- <td>No</td>
644
- <td></td>
645
- </tr>
646
- <tr>
647
- <td><strong>Heap sort</strong></td>
648
- <td>n&nbsp;log(n)</td>
649
- <td>n&nbsp;log(n)</td>
650
- <td>n&nbsp;log(n)</td>
651
- <td>1</td>
652
- <td>No</td>
653
- <td></td>
654
- </tr>
655
- <tr>
656
- <td><strong>Merge sort</strong></td>
657
- <td>n&nbsp;log(n)</td>
658
- <td>n&nbsp;log(n)</td>
659
- <td>n&nbsp;log(n)</td>
660
- <td>n</td>
661
- <td>Yes</td>
662
- <td></td>
663
- </tr>
664
- <tr>
665
- <td><strong>Quick sort</strong></td>
666
- <td>n&nbsp;log(n)</td>
667
- <td>n&nbsp;log(n)</td>
668
- <td>n<sup>2</sup></td>
669
- <td>log(n)</td>
670
- <td>No</td>
671
- <td>Quicksort is usually done in-place with O(log(n)) stack space</td>
672
- </tr>
673
- <tr>
674
- <td><strong>Shell sort</strong></td>
675
- <td>n&nbsp;log(n)</td>
676
- <td>depends on gap sequence</td>
677
- <td>n&nbsp;(log(n))<sup>2</sup></td>
678
- <td>1</td>
679
- <td>No</td>
680
- <td></td>
681
- </tr>
682
- <tr>
683
- <td><strong>Counting sort</strong></td>
684
- <td>n + r</td>
685
- <td>n + r</td>
686
- <td>n + r</td>
687
- <td>n + r</td>
688
- <td>Yes</td>
689
- <td>r - biggest number in array</td>
690
- </tr>
691
- <tr>
692
- <td><strong>Radix sort</strong></td>
693
- <td>n * k</td>
694
- <td>n * k</td>
695
- <td>n * k</td>
696
- <td>n + k</td>
697
- <td>Yes</td>
698
- <td>k - length of longest key</td>
699
- </tr>
700
- </tbody>
722
+ <tr>
723
+ <th>Principle</th>
724
+ <th>Description</th>
725
+ </tr>
726
+ <tr>
727
+ <td>Practicality</td>
728
+ <td>Follows ES6 and ESNext standards, offering unified and considerate optional parameters, and simplifies method names.</td>
729
+ </tr>
730
+ <tr>
731
+ <td>Extensibility</td>
732
+ <td>Adheres to OOP (Object-Oriented Programming) principles, allowing inheritance for all data structures.</td>
733
+ </tr>
734
+ <tr>
735
+ <td>Modularization</td>
736
+ <td>Includes data structure modularization and independent NPM packages.</td>
737
+ </tr>
738
+ <tr>
739
+ <td>Efficiency</td>
740
+ <td>All methods provide time and space complexity, comparable to native JS performance.</td>
741
+ </tr>
742
+ <tr>
743
+ <td>Maintainability</td>
744
+ <td>Follows open-source community development standards, complete documentation, continuous integration, and adheres to TDD (Test-Driven Development) patterns.</td>
745
+ </tr>
746
+ <tr>
747
+ <td>Testability</td>
748
+ <td>Automated and customized unit testing, performance testing, and integration testing.</td>
749
+ </tr>
750
+ <tr>
751
+ <td>Portability</td>
752
+ <td>Plans for porting to Java, Python, and C++, currently achieved to 80%.</td>
753
+ </tr>
754
+ <tr>
755
+ <td>Reusability</td>
756
+ <td>Fully decoupled, minimized side effects, and adheres to OOP.</td>
757
+ </tr>
758
+ <tr>
759
+ <td>Security</td>
760
+ <td>Carefully designed security for member variables and methods. Read-write separation. Data structure software does not need to consider other security aspects.</td>
761
+ </tr>
762
+ <tr>
763
+ <td>Scalability</td>
764
+ <td>Data structure software does not involve load issues.</td>
765
+ </tr>
701
766
  </table>
702
767
 
703
- ![overview diagram](https://github.com/zrwusa/assets/blob/master/images/data-structure-typed/assets/overview-diagram-of-data-structures.png)
704
-
705
- ![complexities](https://github.com/zrwusa/assets/blob/master/images/data-structure-typed/assets/complexities-diff.jpg)
706
-
707
- ![complexities of data structures](https://github.com/zrwusa/assets/blob/master/images/data-structure-typed/assets/data-structure-complexities.jpg)
708
-
709
-
710
768
 
711
769
 
712
770
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "avl-tree-typed",
3
- "version": "1.47.3",
3
+ "version": "1.47.4",
4
4
  "description": "AVLTree(Adelson-Velsky and Landis Tree). Javascript & Typescript Data Structure.",
5
5
  "main": "dist/index.js",
6
6
  "scripts": {
@@ -163,6 +163,6 @@
163
163
  "typescript": "^4.9.5"
164
164
  },
165
165
  "dependencies": {
166
- "data-structure-typed": "^1.47.3"
166
+ "data-structure-typed": "^1.47.4"
167
167
  }
168
168
  }