data-structure-typed 1.49.4 → 1.49.6

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 (186) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +15 -26
  3. package/README_zh-CN.md +1 -1
  4. package/benchmark/report.html +14 -23
  5. package/benchmark/report.json +163 -256
  6. package/dist/cjs/data-structures/base/iterable-base.d.ts +1 -1
  7. package/dist/cjs/data-structures/base/iterable-base.js.map +1 -1
  8. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +53 -48
  9. package/dist/cjs/data-structures/binary-tree/avl-tree.js +55 -49
  10. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  11. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +154 -143
  12. package/dist/cjs/data-structures/binary-tree/binary-tree.js +211 -198
  13. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  14. package/dist/cjs/data-structures/binary-tree/bst.d.ts +83 -71
  15. package/dist/cjs/data-structures/binary-tree/bst.js +113 -89
  16. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  17. package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +37 -35
  18. package/dist/cjs/data-structures/binary-tree/rb-tree.js +62 -59
  19. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  20. package/dist/cjs/data-structures/binary-tree/tree-multimap.d.ts +46 -55
  21. package/dist/cjs/data-structures/binary-tree/tree-multimap.js +59 -94
  22. package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
  23. package/dist/cjs/data-structures/graph/abstract-graph.d.ts +1 -1
  24. package/dist/cjs/data-structures/graph/abstract-graph.js +3 -2
  25. package/dist/cjs/data-structures/graph/abstract-graph.js.map +1 -1
  26. package/dist/cjs/data-structures/graph/directed-graph.js.map +1 -1
  27. package/dist/cjs/data-structures/graph/map-graph.js.map +1 -1
  28. package/dist/cjs/data-structures/graph/undirected-graph.js.map +1 -1
  29. package/dist/cjs/data-structures/hash/hash-map.d.ts +1 -1
  30. package/dist/cjs/data-structures/hash/hash-map.js +2 -2
  31. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  32. package/dist/cjs/data-structures/heap/heap.js +2 -3
  33. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  34. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
  35. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
  36. package/dist/cjs/data-structures/linked-list/singly-linked-list.d.ts +2 -2
  37. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  38. package/dist/cjs/data-structures/matrix/index.d.ts +0 -2
  39. package/dist/cjs/data-structures/matrix/index.js +0 -2
  40. package/dist/cjs/data-structures/matrix/index.js.map +1 -1
  41. package/dist/cjs/data-structures/matrix/matrix.d.ts +128 -10
  42. package/dist/cjs/data-structures/matrix/matrix.js +400 -15
  43. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
  44. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  45. package/dist/cjs/data-structures/queue/deque.d.ts +2 -2
  46. package/dist/cjs/data-structures/queue/deque.js +5 -7
  47. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  48. package/dist/cjs/data-structures/queue/queue.d.ts +1 -1
  49. package/dist/cjs/interfaces/binary-tree.d.ts +3 -3
  50. package/dist/cjs/types/common.d.ts +3 -3
  51. package/dist/cjs/types/common.js +2 -2
  52. package/dist/cjs/types/common.js.map +1 -1
  53. package/dist/cjs/types/data-structures/base/base.d.ts +1 -1
  54. package/dist/cjs/types/data-structures/heap/heap.d.ts +1 -1
  55. package/dist/cjs/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  56. package/dist/cjs/utils/utils.d.ts +1 -0
  57. package/dist/cjs/utils/utils.js +6 -1
  58. package/dist/cjs/utils/utils.js.map +1 -1
  59. package/dist/mjs/data-structures/base/iterable-base.d.ts +1 -1
  60. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +53 -48
  61. package/dist/mjs/data-structures/binary-tree/avl-tree.js +57 -50
  62. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +154 -143
  63. package/dist/mjs/data-structures/binary-tree/binary-tree.js +212 -199
  64. package/dist/mjs/data-structures/binary-tree/bst.d.ts +83 -71
  65. package/dist/mjs/data-structures/binary-tree/bst.js +115 -90
  66. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +37 -35
  67. package/dist/mjs/data-structures/binary-tree/rb-tree.js +64 -60
  68. package/dist/mjs/data-structures/binary-tree/tree-multimap.d.ts +46 -55
  69. package/dist/mjs/data-structures/binary-tree/tree-multimap.js +61 -95
  70. package/dist/mjs/data-structures/graph/abstract-graph.d.ts +1 -1
  71. package/dist/mjs/data-structures/graph/abstract-graph.js +4 -3
  72. package/dist/mjs/data-structures/hash/hash-map.d.ts +1 -1
  73. package/dist/mjs/data-structures/hash/hash-map.js +2 -2
  74. package/dist/mjs/data-structures/heap/heap.js +2 -3
  75. package/dist/mjs/data-structures/linked-list/singly-linked-list.d.ts +2 -2
  76. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +1 -1
  77. package/dist/mjs/data-structures/matrix/index.d.ts +0 -2
  78. package/dist/mjs/data-structures/matrix/index.js +0 -2
  79. package/dist/mjs/data-structures/matrix/matrix.d.ts +128 -10
  80. package/dist/mjs/data-structures/matrix/matrix.js +399 -16
  81. package/dist/mjs/data-structures/queue/deque.d.ts +2 -2
  82. package/dist/mjs/data-structures/queue/deque.js +7 -9
  83. package/dist/mjs/data-structures/queue/queue.d.ts +1 -1
  84. package/dist/mjs/data-structures/queue/queue.js +1 -1
  85. package/dist/mjs/interfaces/binary-tree.d.ts +3 -3
  86. package/dist/mjs/types/common.d.ts +3 -3
  87. package/dist/mjs/types/common.js +2 -2
  88. package/dist/mjs/types/data-structures/base/base.d.ts +1 -1
  89. package/dist/mjs/types/data-structures/heap/heap.d.ts +1 -1
  90. package/dist/mjs/types/data-structures/priority-queue/priority-queue.d.ts +1 -1
  91. package/dist/mjs/utils/utils.d.ts +1 -0
  92. package/dist/mjs/utils/utils.js +4 -0
  93. package/dist/umd/data-structure-typed.js +853 -943
  94. package/dist/umd/data-structure-typed.min.js +2 -2
  95. package/dist/umd/data-structure-typed.min.js.map +1 -1
  96. package/package.json +4 -3
  97. package/src/data-structures/base/index.ts +1 -1
  98. package/src/data-structures/base/iterable-base.ts +7 -10
  99. package/src/data-structures/binary-tree/avl-tree.ts +73 -61
  100. package/src/data-structures/binary-tree/binary-tree.ts +301 -270
  101. package/src/data-structures/binary-tree/bst.ts +139 -115
  102. package/src/data-structures/binary-tree/rb-tree.ts +81 -73
  103. package/src/data-structures/binary-tree/tree-multimap.ts +72 -103
  104. package/src/data-structures/graph/abstract-graph.ts +13 -11
  105. package/src/data-structures/graph/directed-graph.ts +1 -3
  106. package/src/data-structures/graph/map-graph.ts +6 -1
  107. package/src/data-structures/graph/undirected-graph.ts +3 -6
  108. package/src/data-structures/hash/hash-map.ts +18 -16
  109. package/src/data-structures/heap/heap.ts +7 -10
  110. package/src/data-structures/heap/max-heap.ts +2 -1
  111. package/src/data-structures/heap/min-heap.ts +2 -1
  112. package/src/data-structures/linked-list/singly-linked-list.ts +2 -3
  113. package/src/data-structures/matrix/index.ts +0 -2
  114. package/src/data-structures/matrix/matrix.ts +442 -13
  115. package/src/data-structures/priority-queue/min-priority-queue.ts +11 -10
  116. package/src/data-structures/queue/deque.ts +18 -39
  117. package/src/data-structures/queue/queue.ts +1 -1
  118. package/src/interfaces/binary-tree.ts +9 -4
  119. package/src/types/common.ts +5 -5
  120. package/src/types/data-structures/base/base.ts +14 -3
  121. package/src/types/data-structures/base/index.ts +1 -1
  122. package/src/types/data-structures/graph/abstract-graph.ts +4 -2
  123. package/src/types/data-structures/hash/hash-map.ts +3 -3
  124. package/src/types/data-structures/heap/heap.ts +2 -2
  125. package/src/types/data-structures/priority-queue/priority-queue.ts +2 -2
  126. package/src/utils/utils.ts +7 -1
  127. package/test/integration/avl-tree.test.ts +18 -1
  128. package/test/integration/bst.test.ts +2 -2
  129. package/test/performance/data-structures/binary-tree/avl-tree.test.ts +4 -12
  130. package/test/performance/data-structures/binary-tree/binary-tree-overall.test.ts +37 -0
  131. package/test/performance/data-structures/binary-tree/binary-tree.test.ts +6 -16
  132. package/test/performance/data-structures/binary-tree/bst.test.ts +5 -13
  133. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +6 -16
  134. package/test/performance/data-structures/comparison/comparison.test.ts +19 -47
  135. package/test/performance/data-structures/graph/directed-graph.test.ts +3 -14
  136. package/test/performance/data-structures/hash/hash-map.test.ts +14 -38
  137. package/test/performance/data-structures/heap/heap.test.ts +5 -18
  138. package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +0 -2
  139. package/test/performance/data-structures/linked-list/singly-linked-list.test.ts +0 -2
  140. package/test/performance/data-structures/priority-queue/max-priority-queue.test.ts +2 -4
  141. package/test/performance/data-structures/priority-queue/priority-queue.test.ts +4 -14
  142. package/test/performance/data-structures/queue/deque.test.ts +6 -7
  143. package/test/performance/data-structures/queue/queue.test.ts +13 -29
  144. package/test/performance/data-structures/stack/stack.test.ts +6 -18
  145. package/test/performance/data-structures/trie/trie.test.ts +2 -6
  146. package/test/performance/reportor.ts +14 -15
  147. package/test/unit/data-structures/binary-tree/avl-tree.test.ts +14 -3
  148. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +65 -29
  149. package/test/unit/data-structures/binary-tree/bst.test.ts +69 -27
  150. package/test/unit/data-structures/binary-tree/overall.test.ts +16 -18
  151. package/test/unit/data-structures/binary-tree/rb-tree.test.ts +17 -6
  152. package/test/unit/data-structures/binary-tree/tree-multimap.test.ts +37 -21
  153. package/test/unit/data-structures/graph/directed-graph.test.ts +104 -45
  154. package/test/unit/data-structures/graph/undirected-graph.test.ts +57 -40
  155. package/test/unit/data-structures/hash/hash-map.test.ts +48 -28
  156. package/test/unit/data-structures/hash/hash-table.test.ts +0 -4
  157. package/test/unit/data-structures/heap/heap.test.ts +0 -1
  158. package/test/unit/data-structures/heap/min-heap.test.ts +6 -5
  159. package/test/unit/data-structures/linked-list/doubly-linked-list.test.ts +10 -11
  160. package/test/unit/data-structures/linked-list/singly-linked-list.test.ts +3 -4
  161. package/test/unit/data-structures/matrix/matrix.test.ts +345 -52
  162. package/test/unit/data-structures/priority-queue/max-priority-queue.test.ts +1 -1
  163. package/test/unit/data-structures/priority-queue/priority-queue.test.ts +0 -1
  164. package/test/unit/data-structures/queue/deque.test.ts +0 -6
  165. package/test/unit/data-structures/queue/queue.test.ts +1 -1
  166. package/test/unit/data-structures/stack/stack.test.ts +3 -4
  167. package/test/unit/unrestricted-interconversion.test.ts +50 -44
  168. package/test/utils/performanc.ts +1 -1
  169. package/typedoc.json +30 -0
  170. package/dist/cjs/data-structures/matrix/matrix2d.d.ts +0 -107
  171. package/dist/cjs/data-structures/matrix/matrix2d.js +0 -200
  172. package/dist/cjs/data-structures/matrix/matrix2d.js.map +0 -1
  173. package/dist/cjs/data-structures/matrix/vector2d.d.ts +0 -200
  174. package/dist/cjs/data-structures/matrix/vector2d.js +0 -291
  175. package/dist/cjs/data-structures/matrix/vector2d.js.map +0 -1
  176. package/dist/mjs/data-structures/matrix/matrix2d.d.ts +0 -107
  177. package/dist/mjs/data-structures/matrix/matrix2d.js +0 -196
  178. package/dist/mjs/data-structures/matrix/vector2d.d.ts +0 -200
  179. package/dist/mjs/data-structures/matrix/vector2d.js +0 -289
  180. package/src/data-structures/matrix/matrix2d.ts +0 -211
  181. package/src/data-structures/matrix/vector2d.ts +0 -315
  182. package/test/performance/data-structures/binary-tree/overall.test.ts +0 -0
  183. package/test/performance/data-structures/matrix/matrix2d.test.ts +0 -0
  184. package/test/performance/data-structures/matrix/vector2d.test.ts +0 -0
  185. package/test/unit/data-structures/matrix/matrix2d.test.ts +0 -345
  186. package/test/unit/data-structures/matrix/vector2d.test.ts +0 -171
@@ -1,6 +1,6 @@
1
1
  export enum BSTVariant {
2
- MIN = 'MIN',
3
- MAX = 'MAX',
2
+ STANDARD = 'STANDARD',
3
+ INVERSE = 'INVERSE'
4
4
  }
5
5
 
6
6
  export enum CP {
@@ -46,15 +46,15 @@ export interface IterableWithLength<T> extends Iterable<T> {
46
46
  length: number | ((...args: any[]) => number);
47
47
  }
48
48
 
49
- export type IterableWithSizeOrLength<T> = IterableWithSize<T> | IterableWithLength<T>
49
+ export type IterableWithSizeOrLength<T> = IterableWithSize<T> | IterableWithLength<T>;
50
50
 
51
- export type BinaryTreePrintOptions = { isShowUndefined?: boolean, isShowNull?: boolean, isShowRedBlackNIL?: boolean }
51
+ export type BinaryTreePrintOptions = { isShowUndefined?: boolean; isShowNull?: boolean; isShowRedBlackNIL?: boolean };
52
52
 
53
53
  export type BTNEntry<K, V> = [K | null | undefined, V | undefined];
54
54
 
55
55
  export type BTNKeyOrNode<K, N> = K | null | undefined | N;
56
56
 
57
- export type BTNExemplar<K, V, N> = BTNEntry<K, V> | BTNKeyOrNode<K, N>
57
+ export type KeyOrNodeOrEntry<K, V, N> = BTNEntry<K, V> | BTNKeyOrNode<K, N>;
58
58
 
59
59
  export type BTNodePureKeyOrNode<K, N> = K | N;
60
60
 
@@ -1,6 +1,17 @@
1
- import { IterableElementBase, IterableEntryBase } from "../../../data-structures";
1
+ import { IterableElementBase, IterableEntryBase } from '../../../data-structures';
2
2
 
3
3
  export type EntryCallback<K, V, R> = (value: V, key: K, index: number, container: IterableEntryBase<K, V>) => R;
4
4
  export type ElementCallback<V, R> = (element: V, index: number, container: IterableElementBase<V>) => R;
5
- export type ReduceEntryCallback<K, V, R> = (accumulator: R, value: V, key: K, index: number, container: IterableEntryBase<K, V>) => R;
6
- export type ReduceElementCallback<V, R> = (accumulator: R, element: V, index: number, container: IterableElementBase<V>) => R;
5
+ export type ReduceEntryCallback<K, V, R> = (
6
+ accumulator: R,
7
+ value: V,
8
+ key: K,
9
+ index: number,
10
+ container: IterableEntryBase<K, V>
11
+ ) => R;
12
+ export type ReduceElementCallback<V, R> = (
13
+ accumulator: R,
14
+ element: V,
15
+ index: number,
16
+ container: IterableElementBase<V>
17
+ ) => R;
@@ -1 +1 @@
1
- export * from './base';
1
+ export * from './base';
@@ -1,6 +1,7 @@
1
1
  export type VertexKey = string | number;
2
2
 
3
- export type DijkstraResult<V> = {
3
+ export type DijkstraResult<V> =
4
+ | {
4
5
  distMap: Map<V, number>;
5
6
  distPaths?: Map<V, V[]>;
6
7
  preMap: Map<V, V | undefined>;
@@ -8,4 +9,5 @@ export type DijkstraResult<V> = {
8
9
  paths: V[][];
9
10
  minDist: number;
10
11
  minPath: V[];
11
- } | undefined;
12
+ }
13
+ | undefined;
@@ -7,7 +7,7 @@ export type HashMapLinkedNode<K, V> = {
7
7
 
8
8
  export type HashMapOptions<K> = {
9
9
  hashFn: (key: K) => string;
10
- objHashFn: (key: K) => object
11
- }
10
+ objHashFn: (key: K) => object;
11
+ };
12
12
 
13
- export type HashMapStoreItem<K, V> = { key: K, value: V };
13
+ export type HashMapStoreItem<K, V> = { key: K; value: V };
@@ -1,3 +1,3 @@
1
- import { Comparator } from "../../common";
1
+ import { Comparator } from '../../common';
2
2
 
3
- export type HeapOptions<T> = { comparator: Comparator<T> }
3
+ export type HeapOptions<T> = { comparator: Comparator<T> };
@@ -1,3 +1,3 @@
1
- import { HeapOptions } from "../heap";
1
+ import { HeapOptions } from '../heap';
2
2
 
3
- export type PriorityQueueOptions<T> = HeapOptions<T> & {}
3
+ export type PriorityQueueOptions<T> = HeapOptions<T> & {};
@@ -98,4 +98,10 @@ export const isWeakKey = (input: unknown): input is object => {
98
98
  return (inputType === 'object' && input !== null) || inputType === 'function';
99
99
  };
100
100
 
101
- export const calcMinUnitsRequired = (totalQuantity: number, unitSize: number) => Math.floor((totalQuantity + unitSize - 1) / unitSize)
101
+ export const calcMinUnitsRequired = (totalQuantity: number, unitSize: number) =>
102
+ Math.floor((totalQuantity + unitSize - 1) / unitSize);
103
+
104
+ export const roundFixed = (num: number, digit: number = 10) => {
105
+ const multiplier = Math.pow(10, digit);
106
+ return Math.round(num * multiplier) / multiplier;
107
+ };
@@ -2,7 +2,24 @@ import { AVLTree, CP } from 'avl-tree-typed';
2
2
 
3
3
  describe('AVL Tree Test', () => {
4
4
  it('should perform various operations on a AVL Tree', () => {
5
- const arr: [number, number][] = [[11, 11], [3, 3], [15, 15], [1, 1], [8, 8], [13, 13], [16, 16], [2, 2], [6, 6], [9, 9], [12, 12], [14, 14], [4, 4], [7, 7], [10, 10], [5, 5]];
5
+ const arr: [number, number][] = [
6
+ [11, 11],
7
+ [3, 3],
8
+ [15, 15],
9
+ [1, 1],
10
+ [8, 8],
11
+ [13, 13],
12
+ [16, 16],
13
+ [2, 2],
14
+ [6, 6],
15
+ [9, 9],
16
+ [12, 12],
17
+ [14, 14],
18
+ [4, 4],
19
+ [7, 7],
20
+ [10, 10],
21
+ [5, 5]
22
+ ];
6
23
  const tree = new AVLTree();
7
24
 
8
25
  for (const i of arr) tree.add(i);
@@ -7,7 +7,7 @@ describe('Individual package BST operations test', () => {
7
7
  bst.add([11, 11]);
8
8
  bst.add([3, 3]);
9
9
  const idsOrValues = [15, 1, 8, 13, 16, 2, 6, 9, 12, 14, 4, 7, 10, 5];
10
- bst.addMany(idsOrValues, false);
10
+ bst.addMany(idsOrValues, undefined);
11
11
  expect(bst.root).toBeInstanceOf(BSTNode);
12
12
 
13
13
  if (bst.root) expect(bst.root.key).toBe(11);
@@ -204,7 +204,7 @@ describe('Individual package BST operations test', () => {
204
204
  [5, { key: 5, keyA: 5 }]
205
205
  ];
206
206
 
207
- objBST.addMany(values, false);
207
+ objBST.addMany(values, undefined);
208
208
 
209
209
  expect(objBST.root).toBeInstanceOf(BSTNode);
210
210
 
@@ -10,27 +10,19 @@ const arr = getRandomIntArray(TEN_THOUSAND, 0, TEN_THOUSAND, true);
10
10
  suite
11
11
  .add(`${TEN_THOUSAND.toLocaleString()} add randomly`, () => {
12
12
  avl.clear();
13
- for (let i = 0; i < arr.length; i++) {
14
- avl.add(arr[i]);
15
- }
13
+ for (let i = 0; i < arr.length; i++) avl.add(arr[i]);
16
14
  })
17
15
  .add(`${TEN_THOUSAND.toLocaleString()} add & delete randomly`, () => {
18
16
  avl.clear();
19
- for (let i = 0; i < arr.length; i++) {
20
- avl.add(arr[i]);
21
- }
22
- for (let i = 0; i < arr.length; i++) {
23
- avl.delete(arr[i]);
24
- }
17
+ for (let i = 0; i < arr.length; i++) avl.add(arr[i]);
18
+ for (let i = 0; i < arr.length; i++) avl.delete(arr[i]);
25
19
  })
26
20
  .add(`${TEN_THOUSAND.toLocaleString()} addMany`, () => {
27
21
  avl.clear();
28
22
  avl.addMany(arr);
29
23
  })
30
24
  .add(`${TEN_THOUSAND.toLocaleString()} get`, () => {
31
- for (let i = 0; i < arr.length; i++) {
32
- avl.get(arr[i]);
33
- }
25
+ for (let i = 0; i < arr.length; i++) avl.get(arr[i]);
34
26
  });
35
27
 
36
28
  export { suite };
@@ -0,0 +1,37 @@
1
+ import { AVLTree, RedBlackTree } from '../../../../src';
2
+ import * as Benchmark from 'benchmark';
3
+ import { getRandomIntArray, magnitude } from '../../../utils';
4
+
5
+ const suite = new Benchmark.Suite();
6
+ const rbTree = new RedBlackTree();
7
+ const avlTree = new AVLTree();
8
+ const { TEN_THOUSAND } = magnitude;
9
+ const arr = getRandomIntArray(TEN_THOUSAND, 0, TEN_THOUSAND, true);
10
+
11
+ suite
12
+ .add(`${TEN_THOUSAND.toLocaleString()} RBTree add`, () => {
13
+ rbTree.clear();
14
+ for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
15
+ })
16
+ .add(`${TEN_THOUSAND.toLocaleString()} RBTree add & delete randomly`, () => {
17
+ rbTree.clear();
18
+ for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
19
+ for (let i = 0; i < arr.length; i++) rbTree.delete(arr[i]);
20
+ })
21
+ .add(`${TEN_THOUSAND.toLocaleString()} RBTree get`, () => {
22
+ for (let i = 0; i < arr.length; i++) rbTree.get(arr[i]);
23
+ })
24
+ .add(`${TEN_THOUSAND.toLocaleString()} AVLTree add`, () => {
25
+ avlTree.clear();
26
+ for (let i = 0; i < arr.length; i++) avlTree.add(arr[i]);
27
+ })
28
+ .add(`${TEN_THOUSAND.toLocaleString()} AVLTree add & delete randomly`, () => {
29
+ avlTree.clear();
30
+ for (let i = 0; i < arr.length; i++) avlTree.add(arr[i]);
31
+ for (let i = 0; i < arr.length; i++) avlTree.delete(arr[i]);
32
+ })
33
+ .add(`${TEN_THOUSAND.toLocaleString()} AVLTree get`, () => {
34
+ for (let i = 0; i < arr.length; i++) avlTree.get(arr[i]);
35
+ });
36
+
37
+ export { suite };
@@ -10,32 +10,22 @@ const arr = getRandomIntArray(THOUSAND, 0, THOUSAND, true);
10
10
  suite
11
11
  .add(`${THOUSAND.toLocaleString()} add randomly`, () => {
12
12
  biTree.clear();
13
- for (let i = 0; i < arr.length; i++) {
14
- biTree.add(arr[i]);
15
- }
13
+ for (let i = 0; i < arr.length; i++) biTree.add(arr[i]);
16
14
  })
17
15
  .add(`${THOUSAND.toLocaleString()} add & delete randomly`, () => {
18
16
  biTree.clear();
19
- for (let i = 0; i < arr.length; i++) {
20
- biTree.add(arr[i]);
21
- }
22
- for (let i = 0; i < arr.length; i++) {
23
- biTree.delete(arr[i]);
24
- }
17
+ for (let i = 0; i < arr.length; i++) biTree.add(arr[i]);
18
+ for (let i = 0; i < arr.length; i++) biTree.delete(arr[i]);
25
19
  })
26
20
  .add(`${THOUSAND.toLocaleString()} addMany`, () => {
27
21
  biTree.clear();
28
22
  biTree.addMany(arr);
29
23
  })
30
24
  .add(`${THOUSAND.toLocaleString()} get`, () => {
31
- for (let i = 0; i < arr.length; i++) {
32
- biTree.get(arr[i]);
33
- }
25
+ for (let i = 0; i < arr.length; i++) biTree.get(arr[i]);
34
26
  })
35
27
  .add(`${THOUSAND.toLocaleString()} has`, () => {
36
- for (let i = 0; i < arr.length; i++) {
37
- biTree.get(arr[i]);
38
- }
28
+ for (let i = 0; i < arr.length; i++) biTree.get(arr[i]);
39
29
  })
40
30
  .add(`${THOUSAND.toLocaleString()} dfs`, () => {
41
31
  for (let i = 0; i < THOUSAND; i++) biTree.dfs();
@@ -47,4 +37,4 @@ suite
47
37
  for (let i = 0; i < THOUSAND; i++) biTree.morris(n => n, 'pre');
48
38
  });
49
39
 
50
- export { suite };
40
+ // export { suite };
@@ -10,27 +10,19 @@ const arr = getRandomIntArray(TEN_THOUSAND, 0, TEN_THOUSAND, true);
10
10
  suite
11
11
  .add(`${TEN_THOUSAND.toLocaleString()} add randomly`, () => {
12
12
  bst.clear();
13
- for (let i = 0; i < arr.length; i++) {
14
- bst.add(arr[i]);
15
- }
13
+ for (let i = 0; i < arr.length; i++) bst.add(arr[i]);
16
14
  })
17
15
  .add(`${TEN_THOUSAND.toLocaleString()} add & delete randomly`, () => {
18
16
  bst.clear();
19
- for (let i = 0; i < arr.length; i++) {
20
- bst.add(arr[i]);
21
- }
22
- for (let i = 0; i < arr.length; i++) {
23
- bst.delete(arr[i]);
24
- }
17
+ for (let i = 0; i < arr.length; i++) bst.add(arr[i]);
18
+ for (let i = 0; i < arr.length; i++) bst.delete(arr[i]);
25
19
  })
26
20
  .add(`${TEN_THOUSAND.toLocaleString()} addMany`, () => {
27
21
  bst.clear();
28
22
  bst.addMany(arr);
29
23
  })
30
24
  .add(`${TEN_THOUSAND.toLocaleString()} get`, () => {
31
- for (let i = 0; i < arr.length; i++) {
32
- bst.get(arr[i]);
33
- }
25
+ for (let i = 0; i < arr.length; i++) bst.get(arr[i]);
34
26
  });
35
27
 
36
- export { suite };
28
+ // export { suite };
@@ -12,40 +12,30 @@ const cOrderedMap = new OrderedMap<number, number>();
12
12
 
13
13
  suite.add(`${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
14
14
  rbTree.clear();
15
- for (let i = 0; i < arr.length; i++) {
16
- rbTree.add(arr[i]);
17
- }
15
+ for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
18
16
  });
19
17
 
20
18
  if (isCompetitor) {
21
19
  suite.add(`CPT ${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
22
- for (let i = 0; i < arr.length; i++) {
23
- cOrderedMap.setElement(arr[i], arr[i]);
24
- }
20
+ for (let i = 0; i < arr.length; i++) cOrderedMap.setElement(arr[i], arr[i]);
25
21
  });
26
22
  }
27
23
 
28
24
  suite
29
25
  .add(`${HUNDRED_THOUSAND.toLocaleString()} add & delete randomly`, () => {
30
26
  rbTree.clear();
31
- for (let i = 0; i < arr.length; i++) {
32
- rbTree.add(arr[i]);
33
- }
34
- for (let i = 0; i < arr.length; i++) {
35
- rbTree.delete(arr[i]);
36
- }
27
+ for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
28
+ for (let i = 0; i < arr.length; i++) rbTree.delete(arr[i]);
37
29
  })
38
30
  .add(`${HUNDRED_THOUSAND.toLocaleString()} getNode`, () => {
39
- for (let i = 0; i < arr.length; i++) {
40
- rbTree.getNode(arr[i]);
41
- }
31
+ for (let i = 0; i < arr.length; i++) rbTree.getNode(arr[i]);
42
32
  });
43
33
 
44
34
  suite.add(`${HUNDRED_THOUSAND.toLocaleString()} add & iterator`, () => {
45
35
  rbTree.clear();
46
36
  for (let i = 0; i < arr.length; i++) rbTree.add(arr[i]);
47
37
  const entries = [...rbTree];
48
- return entries.length === HUNDRED_THOUSAND
38
+ return entries.length === HUNDRED_THOUSAND;
49
39
  });
50
40
 
51
41
  export { suite };
@@ -22,25 +22,20 @@ const arrHundredThousand = getRandomIntArray(HUNDRED_THOUSAND, 0, HUNDRED_THOUSA
22
22
 
23
23
  suite
24
24
  .add(`SRC PQ ${TEN_THOUSAND.toLocaleString()} add`, () => {
25
-
26
25
  const pq = new SRCPriorityQueue<number>();
27
26
  for (let i = 0; i < TEN_THOUSAND; i++) pq.add(i);
28
27
  })
29
28
  .add(`CJS PQ ${TEN_THOUSAND.toLocaleString()} add`, () => {
30
-
31
-
32
29
  const pq = new CJSPriorityQueue<number>();
33
30
  for (let i = 0; i < TEN_THOUSAND; i++) pq.add(i);
34
31
  })
35
32
  .add(`MJS PQ ${TEN_THOUSAND.toLocaleString()} add`, () => {
36
-
37
33
  const pq = new MJSPriorityQueue<number>([], { comparator: (a, b) => b - a });
38
34
  for (let i = 0; i < TEN_THOUSAND; i++) pq.add(i);
39
35
  });
40
36
 
41
37
  if (isCompetitor) {
42
38
  suite.add(`CPT PQ ${TEN_THOUSAND.toLocaleString()} add`, () => {
43
-
44
39
  const pq = new CPriorityQueue<number>();
45
40
  for (let i = 0; i < TEN_THOUSAND; i++) pq.push(i);
46
41
  });
@@ -66,84 +61,61 @@ suite
66
61
  for (let i = 0; i < TEN_THOUSAND; i++) pq.poll();
67
62
  });
68
63
 
69
-
70
64
  if (isCompetitor) {
71
- suite.add(`CPT PQ ${TEN_THOUSAND.toLocaleString()} add & pop`, () => {
72
- const pq = new CPriorityQueue<number>();
65
+ suite
66
+ .add(`CPT PQ ${TEN_THOUSAND.toLocaleString()} add & pop`, () => {
67
+ const pq = new CPriorityQueue<number>();
73
68
 
74
- for (let i = 0; i < TEN_THOUSAND; i++) pq.push(i);
75
- for (let i = 0; i < TEN_THOUSAND; i++) pq.pop();
76
- })
69
+ for (let i = 0; i < TEN_THOUSAND; i++) pq.push(i);
70
+ for (let i = 0; i < TEN_THOUSAND; i++) pq.pop();
71
+ })
77
72
  .add(`CPT OM ${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
78
- for (let i = 0; i < arrHundredThousand.length; i++) {
73
+ for (let i = 0; i < arrHundredThousand.length; i++)
79
74
  cOrderedMap.setElement(arrHundredThousand[i], arrHundredThousand[i]);
80
- }
81
75
  })
82
76
  .add(`CPT HM ${TEN_THOUSAND.toLocaleString()} set`, () => {
83
77
  const hm = new CHashMap<number, number>();
84
78
 
85
- for (let i = 0; i < TEN_THOUSAND; i++) {
86
- hm.setElement(i, i);
87
- }
79
+ for (let i = 0; i < TEN_THOUSAND; i++) hm.setElement(i, i);
88
80
  })
89
81
  .add(`CPT HM ${TEN_THOUSAND.toLocaleString()} set & get`, () => {
90
82
  const hm = new CHashMap<number, number>();
91
83
 
92
- for (let i = 0; i < TEN_THOUSAND; i++) {
93
- hm.setElement(i, i);
94
- }
95
- for (let i = 0; i < TEN_THOUSAND; i++) {
96
- hm.getElementByKey(i);
97
- }
84
+ for (let i = 0; i < TEN_THOUSAND; i++) hm.setElement(i, i);
85
+ for (let i = 0; i < TEN_THOUSAND; i++) hm.getElementByKey(i);
98
86
  })
99
87
  .add(`CPT LL ${MILLION.toLocaleString()} unshift`, () => {
100
88
  const list = new CLinkedList<number>();
101
89
 
102
- for (let i = 0; i < MILLION; i++) {
103
- list.pushFront(i);
104
- }
90
+ for (let i = 0; i < MILLION; i++) list.pushFront(i);
105
91
  })
106
92
  .add(`CPT PQ ${TEN_THOUSAND.toLocaleString()} add & pop`, () => {
107
93
  const pq = new CPriorityQueue<number>();
108
94
 
109
- for (let i = 0; i < TEN_THOUSAND; i++) {
110
- pq.push(i);
111
- }
95
+ for (let i = 0; i < TEN_THOUSAND; i++) pq.push(i);
112
96
 
113
- for (let i = 0; i < TEN_THOUSAND; i++) {
114
- pq.pop();
115
- }
97
+ for (let i = 0; i < TEN_THOUSAND; i++) pq.pop();
116
98
  })
117
99
  .add(`CPT DQ ${MILLION.toLocaleString()} push`, () => {
118
100
  const deque = new CDeque<number>();
119
- for (let i = 0; i < MILLION; i++) {
120
- deque.pushBack(i);
121
- }
101
+ for (let i = 0; i < MILLION; i++) deque.pushBack(i);
122
102
  })
123
103
  .add(`CPT Q ${MILLION.toLocaleString()} push`, () => {
124
104
  const queue = new CQueue<number>();
125
105
 
126
- for (let i = 0; i < MILLION; i++) {
127
- queue.push(i);
128
- }
106
+ for (let i = 0; i < MILLION; i++) queue.push(i);
129
107
  })
130
108
  .add(`CPT ST ${MILLION.toLocaleString()} push`, () => {
131
109
  const queue = new CStack<number>();
132
110
 
133
- for (let i = 0; i < MILLION; i++) {
134
- queue.push(i);
135
- }
111
+ for (let i = 0; i < MILLION; i++) queue.push(i);
136
112
  })
137
113
  .add(`CPT ST ${MILLION.toLocaleString()} push & pop`, () => {
138
114
  const queue = new CStack<number>();
139
115
 
140
- for (let i = 0; i < MILLION; i++) {
141
- queue.push(i);
142
- }
143
- for (let i = 0; i < MILLION; i++) {
144
- queue.pop();
145
- }
116
+ for (let i = 0; i < MILLION; i++) queue.push(i);
117
+ for (let i = 0; i < MILLION; i++) queue.pop();
146
118
  });
147
119
  }
148
120
 
149
- export { suite };
121
+ // export { suite };
@@ -9,9 +9,7 @@ const vertexes = getRandomWords(THOUSAND);
9
9
 
10
10
  suite
11
11
  .add(`${THOUSAND.toLocaleString()} addVertex`, () => {
12
- for (const v of vertexes) {
13
- graph.addVertex(v);
14
- }
12
+ for (const v of vertexes) graph.addVertex(v);
15
13
  })
16
14
  .add(`${THOUSAND.toLocaleString()} addEdge`, () => {
17
15
  for (let i = 0; i < THOUSAND; i++) {
@@ -21,29 +19,20 @@ suite
21
19
  }
22
20
  })
23
21
  .add(`${THOUSAND.toLocaleString()} getVertex`, () => {
24
- for (let i = 0; i < THOUSAND; i++) {
25
- graph.getVertex(vertexes[getRandomIndex(vertexes)]);
26
- }
22
+ for (let i = 0; i < THOUSAND; i++) graph.getVertex(vertexes[getRandomIndex(vertexes)]);
27
23
  })
28
24
  .add(`${THOUSAND.toLocaleString()} getEdge`, () => {
29
- for (let i = 0; i < THOUSAND; i++) {
25
+ for (let i = 0; i < THOUSAND; i++)
30
26
  graph.getEdge(vertexes[getRandomIndex(vertexes)], vertexes[getRandomIndex(vertexes)]);
31
- }
32
27
  })
33
28
  .add(`tarjan`, () => {
34
- // for (let i = 0; i < THOUSAND; i++) {
35
29
  graph.tarjan(true);
36
- // }
37
30
  })
38
31
  .add(`tarjan all`, () => {
39
- // for (let i = 0; i < THOUSAND; i++) {
40
32
  graph.tarjan(true, true, true, true);
41
- // }
42
33
  })
43
34
  .add(`topologicalSort`, () => {
44
- // for (let i = 0; i < THOUSAND; i++) {
45
35
  graph.topologicalSort('key');
46
- // }
47
36
  });
48
37
 
49
38
  export { suite };
@@ -10,18 +10,14 @@ const { MILLION } = magnitude;
10
10
  suite.add(`${MILLION.toLocaleString()} set`, () => {
11
11
  const hm = new HashMap<number, number>();
12
12
 
13
- for (let i = 0; i < MILLION; i++) {
14
- hm.set(i, i);
15
- }
13
+ for (let i = 0; i < MILLION; i++) hm.set(i, i);
16
14
  });
17
15
 
18
16
  if (isCompetitor) {
19
17
  suite.add(`CPT ${MILLION.toLocaleString()} set`, () => {
20
18
  const hm = new CHashMap<number, number>();
21
19
 
22
- for (let i = 0; i < MILLION; i++) {
23
- hm.setElement(i, i);
24
- }
20
+ for (let i = 0; i < MILLION; i++) hm.setElement(i, i);
25
21
  });
26
22
  }
27
23
 
@@ -40,45 +36,31 @@ suite.add(`Native Set ${MILLION.toLocaleString()} add`, () => {
40
36
  suite.add(`${MILLION.toLocaleString()} set & get`, () => {
41
37
  const hm = new HashMap<number, number>();
42
38
 
43
- for (let i = 0; i < MILLION; i++) {
44
- hm.set(i, i);
45
- }
46
- for (let i = 0; i < MILLION; i++) {
47
- hm.get(i);
48
- }
39
+ for (let i = 0; i < MILLION; i++) hm.set(i, i);
40
+ for (let i = 0; i < MILLION; i++) hm.get(i);
49
41
  });
50
42
 
51
43
  if (isCompetitor) {
52
44
  suite.add(`CPT ${MILLION.toLocaleString()} set & get`, () => {
53
45
  const hm = new CHashMap<number, number>();
54
46
 
55
- for (let i = 0; i < MILLION; i++) {
56
- hm.setElement(i, i);
57
- }
58
- for (let i = 0; i < MILLION; i++) {
59
- hm.getElementByKey(i);
60
- }
47
+ for (let i = 0; i < MILLION; i++) hm.setElement(i, i);
48
+ for (let i = 0; i < MILLION; i++) hm.getElementByKey(i);
61
49
  });
62
50
  }
63
51
 
64
52
  suite.add(`Native Map ${MILLION.toLocaleString()} set & get`, () => {
65
53
  const hm = new Map<number, number>();
66
54
 
67
- for (let i = 0; i < MILLION; i++) {
68
- hm.set(i, i);
69
- }
70
- for (let i = 0; i < MILLION; i++) {
71
- hm.get(i);
72
- }
55
+ for (let i = 0; i < MILLION; i++) hm.set(i, i);
56
+ for (let i = 0; i < MILLION; i++) hm.get(i);
73
57
  });
74
58
 
75
59
  suite.add(`Native Set ${MILLION.toLocaleString()} add & has`, () => {
76
60
  const hs = new Set<number>();
77
61
 
78
62
  for (let i = 0; i < MILLION; i++) hs.add(i);
79
-
80
63
  for (let i = 0; i < MILLION; i++) hs.has(i);
81
-
82
64
  });
83
65
 
84
66
  suite.add(`${MILLION.toLocaleString()} ObjKey set & get`, () => {
@@ -86,12 +68,10 @@ suite.add(`${MILLION.toLocaleString()} ObjKey set & get`, () => {
86
68
  const objKeys: [number, number][] = [];
87
69
  for (let i = 0; i < MILLION; i++) {
88
70
  const obj: [number, number] = [i, i];
89
- objKeys.push(obj)
71
+ objKeys.push(obj);
90
72
  hm.set(obj, i);
91
73
  }
92
- for (let i = 0; i < MILLION; i++) {
93
- hm.get(objKeys[i]);
94
- }
74
+ for (let i = 0; i < MILLION; i++) hm.get(objKeys[i]);
95
75
  });
96
76
 
97
77
  suite.add(`Native Map ${MILLION.toLocaleString()} ObjKey set & get`, () => {
@@ -99,12 +79,10 @@ suite.add(`Native Map ${MILLION.toLocaleString()} ObjKey set & get`, () => {
99
79
  const objs: [number, number][] = [];
100
80
  for (let i = 0; i < MILLION; i++) {
101
81
  const obj: [number, number] = [i, i];
102
- objs.push(obj)
82
+ objs.push(obj);
103
83
  hm.set(obj, i);
104
84
  }
105
- for (let i = 0; i < MILLION; i++) {
106
- hm.get(objs[i]);
107
- }
85
+ for (let i = 0; i < MILLION; i++) hm.get(objs[i]);
108
86
  });
109
87
 
110
88
  suite.add(`Native Set ${MILLION.toLocaleString()} ObjKey add & has`, () => {
@@ -112,12 +90,10 @@ suite.add(`Native Set ${MILLION.toLocaleString()} ObjKey add & has`, () => {
112
90
  const objs: [number, number][] = [];
113
91
  for (let i = 0; i < MILLION; i++) {
114
92
  const obj: [number, number] = [i, i];
115
- objs.push(obj)
93
+ objs.push(obj);
116
94
  hs.add(obj);
117
95
  }
118
- for (let i = 0; i < MILLION; i++) {
119
- hs.has(objs[i]);
120
- }
96
+ for (let i = 0; i < MILLION; i++) hs.has(objs[i]);
121
97
  });
122
98
 
123
99
  export { suite };