max-priority-queue-typed 2.4.5 → 2.5.1

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 (94) hide show
  1. package/README.md +63 -0
  2. package/dist/cjs/index.cjs +694 -119
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/cjs-legacy/index.cjs +693 -118
  5. package/dist/cjs-legacy/index.cjs.map +1 -1
  6. package/dist/esm/index.mjs +694 -119
  7. package/dist/esm/index.mjs.map +1 -1
  8. package/dist/esm-legacy/index.mjs +693 -118
  9. package/dist/esm-legacy/index.mjs.map +1 -1
  10. package/dist/types/data-structures/base/index.d.ts +1 -0
  11. package/dist/types/data-structures/base/iterable-element-base.d.ts +1 -1
  12. package/dist/types/data-structures/base/iterable-entry-base.d.ts +8 -8
  13. package/dist/types/data-structures/base/linear-base.d.ts +3 -3
  14. package/dist/types/data-structures/binary-tree/avl-tree.d.ts +380 -51
  15. package/dist/types/data-structures/binary-tree/binary-indexed-tree.d.ts +487 -147
  16. package/dist/types/data-structures/binary-tree/binary-tree.d.ts +956 -80
  17. package/dist/types/data-structures/binary-tree/bst.d.ts +816 -29
  18. package/dist/types/data-structures/binary-tree/red-black-tree.d.ts +610 -31
  19. package/dist/types/data-structures/binary-tree/segment-tree.d.ts +326 -135
  20. package/dist/types/data-structures/binary-tree/tree-map.d.ts +3781 -6
  21. package/dist/types/data-structures/binary-tree/tree-multi-map.d.ts +3607 -201
  22. package/dist/types/data-structures/binary-tree/tree-multi-set.d.ts +2874 -65
  23. package/dist/types/data-structures/binary-tree/tree-set.d.ts +3528 -6
  24. package/dist/types/data-structures/graph/abstract-graph.d.ts +4 -4
  25. package/dist/types/data-structures/graph/directed-graph.d.ts +429 -47
  26. package/dist/types/data-structures/graph/map-graph.d.ts +59 -1
  27. package/dist/types/data-structures/graph/undirected-graph.d.ts +393 -59
  28. package/dist/types/data-structures/hash/hash-map.d.ts +473 -89
  29. package/dist/types/data-structures/heap/heap.d.ts +581 -99
  30. package/dist/types/data-structures/heap/max-heap.d.ts +46 -0
  31. package/dist/types/data-structures/heap/min-heap.d.ts +59 -0
  32. package/dist/types/data-structures/linked-list/doubly-linked-list.d.ts +646 -47
  33. package/dist/types/data-structures/linked-list/singly-linked-list.d.ts +596 -68
  34. package/dist/types/data-structures/linked-list/skip-linked-list.d.ts +793 -12
  35. package/dist/types/data-structures/matrix/matrix.d.ts +499 -0
  36. package/dist/types/data-structures/priority-queue/max-priority-queue.d.ts +57 -0
  37. package/dist/types/data-structures/priority-queue/min-priority-queue.d.ts +60 -0
  38. package/dist/types/data-structures/priority-queue/priority-queue.d.ts +60 -0
  39. package/dist/types/data-structures/queue/deque.d.ts +593 -71
  40. package/dist/types/data-structures/queue/queue.d.ts +463 -42
  41. package/dist/types/data-structures/stack/stack.d.ts +384 -32
  42. package/dist/types/data-structures/trie/trie.d.ts +470 -48
  43. package/dist/types/interfaces/graph.d.ts +1 -1
  44. package/dist/types/types/common.d.ts +2 -2
  45. package/dist/types/types/data-structures/binary-tree/segment-tree.d.ts +1 -1
  46. package/dist/types/types/data-structures/heap/heap.d.ts +1 -0
  47. package/dist/types/types/data-structures/linked-list/skip-linked-list.d.ts +1 -4
  48. package/dist/types/types/data-structures/priority-queue/priority-queue.d.ts +1 -0
  49. package/dist/types/types/utils/validate-type.d.ts +4 -4
  50. package/dist/umd/max-priority-queue-typed.js +691 -116
  51. package/dist/umd/max-priority-queue-typed.js.map +1 -1
  52. package/dist/umd/max-priority-queue-typed.min.js +1 -1
  53. package/dist/umd/max-priority-queue-typed.min.js.map +1 -1
  54. package/package.json +2 -2
  55. package/src/data-structures/base/index.ts +1 -0
  56. package/src/data-structures/base/iterable-element-base.ts +4 -5
  57. package/src/data-structures/base/iterable-entry-base.ts +8 -8
  58. package/src/data-structures/base/linear-base.ts +3 -3
  59. package/src/data-structures/binary-tree/avl-tree.ts +386 -51
  60. package/src/data-structures/binary-tree/binary-indexed-tree.ts +596 -247
  61. package/src/data-structures/binary-tree/binary-tree.ts +956 -81
  62. package/src/data-structures/binary-tree/bst.ts +840 -35
  63. package/src/data-structures/binary-tree/red-black-tree.ts +689 -97
  64. package/src/data-structures/binary-tree/segment-tree.ts +498 -249
  65. package/src/data-structures/binary-tree/tree-map.ts +3784 -7
  66. package/src/data-structures/binary-tree/tree-multi-map.ts +3614 -211
  67. package/src/data-structures/binary-tree/tree-multi-set.ts +2874 -65
  68. package/src/data-structures/binary-tree/tree-set.ts +3531 -10
  69. package/src/data-structures/graph/abstract-graph.ts +4 -4
  70. package/src/data-structures/graph/directed-graph.ts +429 -47
  71. package/src/data-structures/graph/map-graph.ts +59 -1
  72. package/src/data-structures/graph/undirected-graph.ts +393 -59
  73. package/src/data-structures/hash/hash-map.ts +476 -92
  74. package/src/data-structures/heap/heap.ts +581 -99
  75. package/src/data-structures/heap/max-heap.ts +46 -0
  76. package/src/data-structures/heap/min-heap.ts +59 -0
  77. package/src/data-structures/linked-list/doubly-linked-list.ts +646 -47
  78. package/src/data-structures/linked-list/singly-linked-list.ts +596 -68
  79. package/src/data-structures/linked-list/skip-linked-list.ts +1067 -90
  80. package/src/data-structures/matrix/matrix.ts +584 -12
  81. package/src/data-structures/priority-queue/max-priority-queue.ts +57 -0
  82. package/src/data-structures/priority-queue/min-priority-queue.ts +60 -0
  83. package/src/data-structures/priority-queue/priority-queue.ts +60 -0
  84. package/src/data-structures/queue/deque.ts +592 -70
  85. package/src/data-structures/queue/queue.ts +463 -42
  86. package/src/data-structures/stack/stack.ts +384 -32
  87. package/src/data-structures/trie/trie.ts +470 -48
  88. package/src/interfaces/graph.ts +1 -1
  89. package/src/types/common.ts +2 -2
  90. package/src/types/data-structures/binary-tree/segment-tree.ts +1 -1
  91. package/src/types/data-structures/heap/heap.ts +1 -0
  92. package/src/types/data-structures/linked-list/skip-linked-list.ts +2 -1
  93. package/src/types/data-structures/priority-queue/priority-queue.ts +1 -0
  94. package/src/types/utils/validate-type.ts +4 -4
@@ -23,6 +23,52 @@ import { ERR } from '../../common';
23
23
  * 7. Efficient Sorting Algorithms: For example, heap sort. Heap sort uses the properties of a heap to sort elements.
24
24
  * 8. Graph Algorithms: Such as Dijkstra's shortest path algorithm and Prim's minimum-spanning tree algorithm, which use heaps to improve performance.
25
25
  * @example
26
+ * // Find the K largest elements
27
+ * const data = [3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5];
28
+ * const heap = new MaxHeap(data);
29
+ *
30
+ * // Extract top 3 elements
31
+ * const top3 = [];
32
+ * for (let i = 0; i < 3; i++) {
33
+ * top3.push(heap.poll());
34
+ * }
35
+ * console.log(top3); // [9, 6, 5];
36
+ * @example
37
+ * // Priority-based task processing
38
+ * interface Task {
39
+ * name: string;
40
+ * priority: number;
41
+ * }
42
+ *
43
+ * const heap = new MaxHeap<Task>([], {
44
+ * comparator: (a, b) => b.priority - a.priority
45
+ * });
46
+ *
47
+ * heap.add({ name: 'Low priority', priority: 1 });
48
+ * heap.add({ name: 'Critical fix', priority: 10 });
49
+ * heap.add({ name: 'Medium task', priority: 5 });
50
+ *
51
+ * // Highest priority first
52
+ * console.log(heap.poll()?.name); // 'Critical fix';
53
+ * console.log(heap.poll()?.name); // 'Medium task';
54
+ * console.log(heap.poll()?.name); // 'Low priority';
55
+ * @example
56
+ * // Real-time top score tracking
57
+ * const scores = new MaxHeap<number>();
58
+ *
59
+ * // Stream of scores coming in
60
+ * for (const score of [72, 85, 91, 68, 95, 78, 88]) {
61
+ * scores.add(score);
62
+ * }
63
+ *
64
+ * // Current highest score without removing
65
+ * console.log(scores.peek()); // 95;
66
+ * console.log(scores.size); // 7;
67
+ *
68
+ * // Remove top 2 scores
69
+ * console.log(scores.poll()); // 95;
70
+ * console.log(scores.poll()); // 91;
71
+ * console.log(scores.peek()); // 88;
26
72
  */
27
73
  export class MaxHeap<E = any, R = any> extends Heap<E, R> {
28
74
  /**
@@ -23,6 +23,65 @@ import { Heap } from './heap';
23
23
  * 7. Efficient Sorting Algorithms: For example, heap sort. MinHeap sort uses the properties of a heap to sort elements.
24
24
  * 8. Graph Algorithms: Such as Dijkstra's shortest path algorithm and Prim's minimum spanning tree algorithm, which use heaps to improve performance.
25
25
  * @example
26
+ * // Merge K sorted arrays
27
+ * const arrays = [
28
+ * [1, 4, 7],
29
+ * [2, 5, 8],
30
+ * [3, 6, 9]
31
+ * ];
32
+ *
33
+ * // Use min heap to merge: track (value, arrayIndex, elementIndex)
34
+ * const heap = new MinHeap<[number, number, number]>([], {
35
+ * comparator: (a, b) => a[0] - b[0]
36
+ * });
37
+ *
38
+ * // Initialize with first element of each array
39
+ * arrays.forEach((arr, i) => heap.add([arr[0], i, 0]));
40
+ *
41
+ * const merged: number[] = [];
42
+ * while (heap.size > 0) {
43
+ * const [val, arrIdx, elemIdx] = heap.poll()!;
44
+ * merged.push(val);
45
+ * if (elemIdx + 1 < arrays[arrIdx].length) {
46
+ * heap.add([arrays[arrIdx][elemIdx + 1], arrIdx, elemIdx + 1]);
47
+ * }
48
+ * }
49
+ *
50
+ * console.log(merged); // [1, 2, 3, 4, 5, 6, 7, 8, 9];
51
+ * @example
52
+ * // Dijkstra-style shortest distance tracking
53
+ * // Simulating distance updates: (distance, nodeId)
54
+ * const heap = new MinHeap<[number, string]>([], {
55
+ * comparator: (a, b) => a[0] - b[0]
56
+ * });
57
+ *
58
+ * heap.add([0, 'start']);
59
+ * heap.add([10, 'A']);
60
+ * heap.add([5, 'B']);
61
+ * heap.add([3, 'C']);
62
+ *
63
+ * // Process nearest node first
64
+ * console.log(heap.poll()); // [0, 'start'];
65
+ * console.log(heap.poll()); // [3, 'C'];
66
+ * console.log(heap.poll()); // [5, 'B'];
67
+ * console.log(heap.poll()); // [10, 'A'];
68
+ * @example
69
+ * // Running median with min heap (upper half)
70
+ * const upperHalf = new MinHeap<number>();
71
+ *
72
+ * // Add larger numbers to min heap
73
+ * for (const n of [5, 8, 3, 9, 1]) {
74
+ * upperHalf.add(n);
75
+ * }
76
+ *
77
+ * // Smallest of the upper half is always accessible
78
+ * console.log(upperHalf.peek()); // 1;
79
+ * console.log(upperHalf.size); // 5;
80
+ *
81
+ * // Remove smallest repeatedly
82
+ * console.log(upperHalf.poll()); // 1;
83
+ * console.log(upperHalf.poll()); // 3;
84
+ * console.log(upperHalf.peek()); // 5;
26
85
  */
27
86
  export class MinHeap<E = any, R = any> extends Heap<E, R> {
28
87
  /**