data-structure-typed 1.49.5 → 1.49.7

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 (222) hide show
  1. package/CHANGELOG.md +1 -1
  2. package/README.md +17 -23
  3. package/README_zh-CN.md +2 -0
  4. package/benchmark/report.html +14 -23
  5. package/benchmark/report.json +158 -251
  6. package/dist/cjs/data-structures/binary-tree/avl-tree.d.ts +53 -48
  7. package/dist/cjs/data-structures/binary-tree/avl-tree.js +55 -49
  8. package/dist/cjs/data-structures/binary-tree/avl-tree.js.map +1 -1
  9. package/dist/cjs/data-structures/binary-tree/binary-tree.d.ts +153 -130
  10. package/dist/cjs/data-structures/binary-tree/binary-tree.js +194 -153
  11. package/dist/cjs/data-structures/binary-tree/binary-tree.js.map +1 -1
  12. package/dist/cjs/data-structures/binary-tree/bst.d.ts +83 -71
  13. package/dist/cjs/data-structures/binary-tree/bst.js +114 -91
  14. package/dist/cjs/data-structures/binary-tree/bst.js.map +1 -1
  15. package/dist/cjs/data-structures/binary-tree/rb-tree.d.ts +37 -35
  16. package/dist/cjs/data-structures/binary-tree/rb-tree.js +62 -59
  17. package/dist/cjs/data-structures/binary-tree/rb-tree.js.map +1 -1
  18. package/dist/cjs/data-structures/binary-tree/tree-multimap.d.ts +46 -39
  19. package/dist/cjs/data-structures/binary-tree/tree-multimap.js +58 -51
  20. package/dist/cjs/data-structures/binary-tree/tree-multimap.js.map +1 -1
  21. package/dist/cjs/data-structures/hash/hash-map.d.ts +24 -27
  22. package/dist/cjs/data-structures/hash/hash-map.js +35 -35
  23. package/dist/cjs/data-structures/hash/hash-map.js.map +1 -1
  24. package/dist/cjs/data-structures/hash/index.d.ts +0 -1
  25. package/dist/cjs/data-structures/hash/index.js +0 -1
  26. package/dist/cjs/data-structures/hash/index.js.map +1 -1
  27. package/dist/cjs/data-structures/heap/heap.d.ts +2 -1
  28. package/dist/cjs/data-structures/heap/heap.js +13 -13
  29. package/dist/cjs/data-structures/heap/heap.js.map +1 -1
  30. package/dist/cjs/data-structures/heap/max-heap.js +1 -1
  31. package/dist/cjs/data-structures/heap/max-heap.js.map +1 -1
  32. package/dist/cjs/data-structures/heap/min-heap.js +1 -1
  33. package/dist/cjs/data-structures/heap/min-heap.js.map +1 -1
  34. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js +1 -1
  35. package/dist/cjs/data-structures/linked-list/doubly-linked-list.js.map +1 -1
  36. package/dist/cjs/data-structures/linked-list/singly-linked-list.js +1 -3
  37. package/dist/cjs/data-structures/linked-list/singly-linked-list.js.map +1 -1
  38. package/dist/cjs/data-structures/linked-list/skip-linked-list.d.ts +2 -8
  39. package/dist/cjs/data-structures/linked-list/skip-linked-list.js +15 -18
  40. package/dist/cjs/data-structures/linked-list/skip-linked-list.js.map +1 -1
  41. package/dist/cjs/data-structures/matrix/matrix.d.ts +2 -7
  42. package/dist/cjs/data-structures/matrix/matrix.js +0 -7
  43. package/dist/cjs/data-structures/matrix/matrix.js.map +1 -1
  44. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js +1 -1
  45. package/dist/cjs/data-structures/priority-queue/max-priority-queue.js.map +1 -1
  46. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js +1 -1
  47. package/dist/cjs/data-structures/priority-queue/min-priority-queue.js.map +1 -1
  48. package/dist/cjs/data-structures/priority-queue/priority-queue.js +1 -1
  49. package/dist/cjs/data-structures/priority-queue/priority-queue.js.map +1 -1
  50. package/dist/cjs/data-structures/queue/deque.d.ts +2 -11
  51. package/dist/cjs/data-structures/queue/deque.js +9 -13
  52. package/dist/cjs/data-structures/queue/deque.js.map +1 -1
  53. package/dist/cjs/data-structures/queue/queue.d.ts +13 -13
  54. package/dist/cjs/data-structures/queue/queue.js +29 -25
  55. package/dist/cjs/data-structures/queue/queue.js.map +1 -1
  56. package/dist/cjs/data-structures/stack/stack.js +2 -3
  57. package/dist/cjs/data-structures/stack/stack.js.map +1 -1
  58. package/dist/cjs/data-structures/trie/trie.d.ts +2 -2
  59. package/dist/cjs/data-structures/trie/trie.js +9 -5
  60. package/dist/cjs/data-structures/trie/trie.js.map +1 -1
  61. package/dist/cjs/interfaces/binary-tree.d.ts +3 -3
  62. package/dist/cjs/types/common.d.ts +3 -3
  63. package/dist/cjs/types/common.js +2 -2
  64. package/dist/cjs/types/common.js.map +1 -1
  65. package/dist/cjs/types/data-structures/binary-tree/binary-tree.d.ts +2 -2
  66. package/dist/cjs/types/data-structures/binary-tree/bst.d.ts +1 -1
  67. package/dist/cjs/types/data-structures/binary-tree/tree-multimap.d.ts +1 -1
  68. package/dist/cjs/types/data-structures/hash/hash-map.d.ts +5 -2
  69. package/dist/cjs/types/data-structures/hash/index.d.ts +0 -1
  70. package/dist/cjs/types/data-structures/hash/index.js +0 -1
  71. package/dist/cjs/types/data-structures/hash/index.js.map +1 -1
  72. package/dist/cjs/types/data-structures/heap/heap.d.ts +1 -1
  73. package/dist/cjs/types/data-structures/linked-list/index.d.ts +1 -0
  74. package/dist/cjs/types/data-structures/linked-list/index.js +1 -0
  75. package/dist/cjs/types/data-structures/linked-list/index.js.map +1 -1
  76. package/dist/cjs/types/data-structures/linked-list/skip-linked-list.d.ts +4 -1
  77. package/dist/cjs/types/data-structures/matrix/index.d.ts +1 -0
  78. package/dist/cjs/types/data-structures/matrix/index.js +1 -0
  79. package/dist/cjs/types/data-structures/matrix/index.js.map +1 -1
  80. package/dist/cjs/types/data-structures/matrix/matrix.d.ts +7 -1
  81. package/dist/cjs/types/data-structures/queue/deque.d.ts +3 -1
  82. package/dist/cjs/types/data-structures/trie/trie.d.ts +3 -1
  83. package/dist/mjs/data-structures/binary-tree/avl-tree.d.ts +53 -48
  84. package/dist/mjs/data-structures/binary-tree/avl-tree.js +55 -49
  85. package/dist/mjs/data-structures/binary-tree/binary-tree.d.ts +153 -130
  86. package/dist/mjs/data-structures/binary-tree/binary-tree.js +194 -153
  87. package/dist/mjs/data-structures/binary-tree/bst.d.ts +83 -71
  88. package/dist/mjs/data-structures/binary-tree/bst.js +114 -91
  89. package/dist/mjs/data-structures/binary-tree/rb-tree.d.ts +37 -35
  90. package/dist/mjs/data-structures/binary-tree/rb-tree.js +62 -59
  91. package/dist/mjs/data-structures/binary-tree/tree-multimap.d.ts +46 -39
  92. package/dist/mjs/data-structures/binary-tree/tree-multimap.js +58 -51
  93. package/dist/mjs/data-structures/hash/hash-map.d.ts +24 -27
  94. package/dist/mjs/data-structures/hash/hash-map.js +35 -37
  95. package/dist/mjs/data-structures/hash/index.d.ts +0 -1
  96. package/dist/mjs/data-structures/hash/index.js +0 -1
  97. package/dist/mjs/data-structures/heap/heap.d.ts +2 -1
  98. package/dist/mjs/data-structures/heap/heap.js +19 -20
  99. package/dist/mjs/data-structures/heap/max-heap.js +1 -1
  100. package/dist/mjs/data-structures/heap/min-heap.js +1 -1
  101. package/dist/mjs/data-structures/linked-list/doubly-linked-list.js +1 -1
  102. package/dist/mjs/data-structures/linked-list/singly-linked-list.js +2 -5
  103. package/dist/mjs/data-structures/linked-list/skip-linked-list.d.ts +2 -8
  104. package/dist/mjs/data-structures/linked-list/skip-linked-list.js +16 -23
  105. package/dist/mjs/data-structures/matrix/matrix.d.ts +2 -7
  106. package/dist/mjs/data-structures/matrix/matrix.js +0 -7
  107. package/dist/mjs/data-structures/priority-queue/max-priority-queue.js +1 -1
  108. package/dist/mjs/data-structures/priority-queue/min-priority-queue.js +1 -1
  109. package/dist/mjs/data-structures/priority-queue/priority-queue.js +1 -1
  110. package/dist/mjs/data-structures/queue/deque.d.ts +2 -11
  111. package/dist/mjs/data-structures/queue/deque.js +9 -14
  112. package/dist/mjs/data-structures/queue/queue.d.ts +13 -13
  113. package/dist/mjs/data-structures/queue/queue.js +30 -28
  114. package/dist/mjs/data-structures/stack/stack.js +3 -5
  115. package/dist/mjs/data-structures/trie/trie.d.ts +2 -2
  116. package/dist/mjs/data-structures/trie/trie.js +10 -9
  117. package/dist/mjs/interfaces/binary-tree.d.ts +3 -3
  118. package/dist/mjs/types/common.d.ts +3 -3
  119. package/dist/mjs/types/common.js +2 -2
  120. package/dist/mjs/types/data-structures/binary-tree/binary-tree.d.ts +2 -2
  121. package/dist/mjs/types/data-structures/binary-tree/bst.d.ts +1 -1
  122. package/dist/mjs/types/data-structures/binary-tree/tree-multimap.d.ts +1 -1
  123. package/dist/mjs/types/data-structures/hash/hash-map.d.ts +5 -2
  124. package/dist/mjs/types/data-structures/hash/index.d.ts +0 -1
  125. package/dist/mjs/types/data-structures/hash/index.js +0 -1
  126. package/dist/mjs/types/data-structures/heap/heap.d.ts +1 -1
  127. package/dist/mjs/types/data-structures/linked-list/index.d.ts +1 -0
  128. package/dist/mjs/types/data-structures/linked-list/index.js +1 -0
  129. package/dist/mjs/types/data-structures/linked-list/skip-linked-list.d.ts +4 -1
  130. package/dist/mjs/types/data-structures/matrix/index.d.ts +1 -0
  131. package/dist/mjs/types/data-structures/matrix/index.js +1 -0
  132. package/dist/mjs/types/data-structures/matrix/matrix.d.ts +7 -1
  133. package/dist/mjs/types/data-structures/queue/deque.d.ts +3 -1
  134. package/dist/mjs/types/data-structures/trie/trie.d.ts +3 -1
  135. package/dist/umd/data-structure-typed.js +620 -823
  136. package/dist/umd/data-structure-typed.min.js +2 -2
  137. package/dist/umd/data-structure-typed.min.js.map +1 -1
  138. package/package.json +1 -1
  139. package/src/data-structures/binary-tree/avl-tree.ts +58 -53
  140. package/src/data-structures/binary-tree/binary-tree.ts +255 -211
  141. package/src/data-structures/binary-tree/bst.ts +126 -107
  142. package/src/data-structures/binary-tree/rb-tree.ts +66 -64
  143. package/src/data-structures/binary-tree/tree-multimap.ts +62 -56
  144. package/src/data-structures/hash/hash-map.ts +46 -50
  145. package/src/data-structures/hash/index.ts +0 -1
  146. package/src/data-structures/heap/heap.ts +20 -19
  147. package/src/data-structures/heap/max-heap.ts +1 -1
  148. package/src/data-structures/heap/min-heap.ts +1 -1
  149. package/src/data-structures/linked-list/doubly-linked-list.ts +1 -1
  150. package/src/data-structures/linked-list/singly-linked-list.ts +2 -5
  151. package/src/data-structures/linked-list/skip-linked-list.ts +15 -16
  152. package/src/data-structures/matrix/matrix.ts +2 -10
  153. package/src/data-structures/priority-queue/max-priority-queue.ts +1 -1
  154. package/src/data-structures/priority-queue/min-priority-queue.ts +1 -1
  155. package/src/data-structures/priority-queue/priority-queue.ts +1 -1
  156. package/src/data-structures/queue/deque.ts +11 -15
  157. package/src/data-structures/queue/queue.ts +29 -28
  158. package/src/data-structures/stack/stack.ts +3 -6
  159. package/src/data-structures/trie/trie.ts +10 -11
  160. package/src/interfaces/binary-tree.ts +3 -3
  161. package/src/types/common.ts +3 -3
  162. package/src/types/data-structures/binary-tree/binary-tree.ts +2 -2
  163. package/src/types/data-structures/binary-tree/bst.ts +1 -1
  164. package/src/types/data-structures/binary-tree/tree-multimap.ts +1 -1
  165. package/src/types/data-structures/hash/hash-map.ts +6 -2
  166. package/src/types/data-structures/hash/index.ts +0 -1
  167. package/src/types/data-structures/heap/heap.ts +1 -1
  168. package/src/types/data-structures/linked-list/index.ts +1 -0
  169. package/src/types/data-structures/linked-list/skip-linked-list.ts +1 -1
  170. package/src/types/data-structures/matrix/index.ts +1 -0
  171. package/src/types/data-structures/matrix/matrix.ts +7 -1
  172. package/src/types/data-structures/queue/deque.ts +1 -1
  173. package/src/types/data-structures/trie/trie.ts +1 -1
  174. package/test/performance/data-structures/binary-tree/avl-tree.test.ts +4 -12
  175. package/test/performance/data-structures/binary-tree/binary-tree-overall.test.ts +37 -0
  176. package/test/performance/data-structures/binary-tree/binary-tree.test.ts +6 -16
  177. package/test/performance/data-structures/binary-tree/bst.test.ts +5 -13
  178. package/test/performance/data-structures/binary-tree/rb-tree.test.ts +5 -15
  179. package/test/performance/data-structures/comparison/comparison.test.ts +13 -36
  180. package/test/performance/data-structures/graph/directed-graph.test.ts +3 -14
  181. package/test/performance/data-structures/hash/hash-map.test.ts +11 -34
  182. package/test/performance/data-structures/heap/heap.test.ts +5 -18
  183. package/test/performance/data-structures/linked-list/doubly-linked-list.test.ts +0 -1
  184. package/test/performance/data-structures/linked-list/singly-linked-list.test.ts +0 -2
  185. package/test/performance/data-structures/priority-queue/max-priority-queue.test.ts +2 -4
  186. package/test/performance/data-structures/priority-queue/priority-queue.test.ts +4 -14
  187. package/test/performance/data-structures/queue/queue.test.ts +8 -25
  188. package/test/performance/data-structures/stack/stack.test.ts +6 -18
  189. package/test/performance/data-structures/trie/trie.test.ts +2 -6
  190. package/test/unit/data-structures/binary-tree/binary-tree.test.ts +6 -5
  191. package/test/unit/data-structures/binary-tree/bst.test.ts +17 -1
  192. package/test/unit/data-structures/linked-list/skip-list.test.ts +1 -1
  193. package/test/unit/data-structures/queue/deque.test.ts +5 -5
  194. package/test/unit/data-structures/trie/trie.test.ts +1 -1
  195. package/dist/cjs/data-structures/hash/hash-table.d.ts +0 -108
  196. package/dist/cjs/data-structures/hash/hash-table.js +0 -282
  197. package/dist/cjs/data-structures/hash/hash-table.js.map +0 -1
  198. package/dist/cjs/types/data-structures/hash/hash-table.d.ts +0 -1
  199. package/dist/cjs/types/data-structures/hash/hash-table.js +0 -3
  200. package/dist/cjs/types/data-structures/hash/hash-table.js.map +0 -1
  201. package/dist/cjs/types/data-structures/matrix/matrix2d.d.ts +0 -1
  202. package/dist/cjs/types/data-structures/matrix/matrix2d.js +0 -3
  203. package/dist/cjs/types/data-structures/matrix/matrix2d.js.map +0 -1
  204. package/dist/cjs/types/data-structures/matrix/vector2d.d.ts +0 -1
  205. package/dist/cjs/types/data-structures/matrix/vector2d.js +0 -3
  206. package/dist/cjs/types/data-structures/matrix/vector2d.js.map +0 -1
  207. package/dist/mjs/data-structures/hash/hash-table.d.ts +0 -108
  208. package/dist/mjs/data-structures/hash/hash-table.js +0 -283
  209. package/dist/mjs/types/data-structures/hash/hash-table.d.ts +0 -1
  210. package/dist/mjs/types/data-structures/hash/hash-table.js +0 -1
  211. package/dist/mjs/types/data-structures/matrix/matrix2d.d.ts +0 -1
  212. package/dist/mjs/types/data-structures/matrix/matrix2d.js +0 -1
  213. package/dist/mjs/types/data-structures/matrix/vector2d.d.ts +0 -1
  214. package/dist/mjs/types/data-structures/matrix/vector2d.js +0 -1
  215. package/src/data-structures/hash/hash-table.ts +0 -318
  216. package/src/types/data-structures/hash/hash-table.ts +0 -1
  217. package/src/types/data-structures/matrix/matrix2d.ts +0 -1
  218. package/src/types/data-structures/matrix/vector2d.ts +0 -1
  219. package/test/performance/data-structures/binary-tree/overall.test.ts +0 -0
  220. package/test/performance/data-structures/matrix/matrix2d.test.ts +0 -0
  221. package/test/performance/data-structures/matrix/vector2d.test.ts +0 -0
  222. package/test/unit/data-structures/hash/hash-table.test.ts +0 -238
@@ -1,2 +1,3 @@
1
1
  export * from './singly-linked-list';
2
2
  export * from './doubly-linked-list';
3
+ export * from './skip-linked-list';
@@ -1 +1 @@
1
- export {};
1
+ export type SkipLinkedListOptions = { maxLevel?: number; probability?: number };
@@ -1 +1,2 @@
1
1
  export * from './navigator';
2
+ export * from './matrix';
@@ -1 +1,7 @@
1
- export {};
1
+ export type MatrixOptions = {
2
+ rows?: number;
3
+ cols?: number;
4
+ addFn?: (a: number, b: number) => any;
5
+ subtractFn?: (a: number, b: number) => any;
6
+ multiplyFn?: (a: number, b: number) => any;
7
+ };
@@ -1 +1 @@
1
- export {};
1
+ export type DequeOptions = { bucketSize?: number };
@@ -1 +1 @@
1
- export {};
1
+ export type TrieOptions = { caseSensitive?: boolean };
@@ -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,33 +12,23 @@ 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`, () => {
@@ -70,75 +70,52 @@ if (isCompetitor) {
70
70
  for (let i = 0; i < TEN_THOUSAND; i++) pq.pop();
71
71
  })
72
72
  .add(`CPT OM ${HUNDRED_THOUSAND.toLocaleString()} add`, () => {
73
- for (let i = 0; i < arrHundredThousand.length; i++) {
73
+ for (let i = 0; i < arrHundredThousand.length; i++)
74
74
  cOrderedMap.setElement(arrHundredThousand[i], arrHundredThousand[i]);
75
- }
76
75
  })
77
76
  .add(`CPT HM ${TEN_THOUSAND.toLocaleString()} set`, () => {
78
77
  const hm = new CHashMap<number, number>();
79
78
 
80
- for (let i = 0; i < TEN_THOUSAND; i++) {
81
- hm.setElement(i, i);
82
- }
79
+ for (let i = 0; i < TEN_THOUSAND; i++) hm.setElement(i, i);
83
80
  })
84
81
  .add(`CPT HM ${TEN_THOUSAND.toLocaleString()} set & get`, () => {
85
82
  const hm = new CHashMap<number, number>();
86
83
 
87
- for (let i = 0; i < TEN_THOUSAND; i++) {
88
- hm.setElement(i, i);
89
- }
90
- for (let i = 0; i < TEN_THOUSAND; i++) {
91
- hm.getElementByKey(i);
92
- }
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);
93
86
  })
94
87
  .add(`CPT LL ${MILLION.toLocaleString()} unshift`, () => {
95
88
  const list = new CLinkedList<number>();
96
89
 
97
- for (let i = 0; i < MILLION; i++) {
98
- list.pushFront(i);
99
- }
90
+ for (let i = 0; i < MILLION; i++) list.pushFront(i);
100
91
  })
101
92
  .add(`CPT PQ ${TEN_THOUSAND.toLocaleString()} add & pop`, () => {
102
93
  const pq = new CPriorityQueue<number>();
103
94
 
104
- for (let i = 0; i < TEN_THOUSAND; i++) {
105
- pq.push(i);
106
- }
95
+ for (let i = 0; i < TEN_THOUSAND; i++) pq.push(i);
107
96
 
108
- for (let i = 0; i < TEN_THOUSAND; i++) {
109
- pq.pop();
110
- }
97
+ for (let i = 0; i < TEN_THOUSAND; i++) pq.pop();
111
98
  })
112
99
  .add(`CPT DQ ${MILLION.toLocaleString()} push`, () => {
113
100
  const deque = new CDeque<number>();
114
- for (let i = 0; i < MILLION; i++) {
115
- deque.pushBack(i);
116
- }
101
+ for (let i = 0; i < MILLION; i++) deque.pushBack(i);
117
102
  })
118
103
  .add(`CPT Q ${MILLION.toLocaleString()} push`, () => {
119
104
  const queue = new CQueue<number>();
120
105
 
121
- for (let i = 0; i < MILLION; i++) {
122
- queue.push(i);
123
- }
106
+ for (let i = 0; i < MILLION; i++) queue.push(i);
124
107
  })
125
108
  .add(`CPT ST ${MILLION.toLocaleString()} push`, () => {
126
109
  const queue = new CStack<number>();
127
110
 
128
- for (let i = 0; i < MILLION; i++) {
129
- queue.push(i);
130
- }
111
+ for (let i = 0; i < MILLION; i++) queue.push(i);
131
112
  })
132
113
  .add(`CPT ST ${MILLION.toLocaleString()} push & pop`, () => {
133
114
  const queue = new CStack<number>();
134
115
 
135
- for (let i = 0; i < MILLION; i++) {
136
- queue.push(i);
137
- }
138
- for (let i = 0; i < MILLION; i++) {
139
- queue.pop();
140
- }
116
+ for (let i = 0; i < MILLION; i++) queue.push(i);
117
+ for (let i = 0; i < MILLION; i++) queue.pop();
141
118
  });
142
119
  }
143
120
 
144
- 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,43 +36,30 @@ 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
64
  });
82
65
 
@@ -88,9 +71,7 @@ suite.add(`${MILLION.toLocaleString()} ObjKey set & get`, () => {
88
71
  objKeys.push(obj);
89
72
  hm.set(obj, i);
90
73
  }
91
- for (let i = 0; i < MILLION; i++) {
92
- hm.get(objKeys[i]);
93
- }
74
+ for (let i = 0; i < MILLION; i++) hm.get(objKeys[i]);
94
75
  });
95
76
 
96
77
  suite.add(`Native Map ${MILLION.toLocaleString()} ObjKey set & get`, () => {
@@ -101,9 +82,7 @@ suite.add(`Native Map ${MILLION.toLocaleString()} ObjKey set & get`, () => {
101
82
  objs.push(obj);
102
83
  hm.set(obj, i);
103
84
  }
104
- for (let i = 0; i < MILLION; i++) {
105
- hm.get(objs[i]);
106
- }
85
+ for (let i = 0; i < MILLION; i++) hm.get(objs[i]);
107
86
  });
108
87
 
109
88
  suite.add(`Native Set ${MILLION.toLocaleString()} ObjKey add & has`, () => {
@@ -114,9 +93,7 @@ suite.add(`Native Set ${MILLION.toLocaleString()} ObjKey add & has`, () => {
114
93
  objs.push(obj);
115
94
  hs.add(obj);
116
95
  }
117
- for (let i = 0; i < MILLION; i++) {
118
- hs.has(objs[i]);
119
- }
96
+ for (let i = 0; i < MILLION; i++) hs.has(objs[i]);
120
97
  });
121
98
 
122
99
  export { suite };
@@ -9,31 +9,18 @@ suite
9
9
  .add(`${HUNDRED_THOUSAND.toLocaleString()} add & poll`, () => {
10
10
  const heap = new Heap<number>([], { comparator: (a, b) => b - a });
11
11
 
12
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
13
- heap.add(i);
14
- }
15
-
16
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
17
- heap.poll();
18
- }
12
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) heap.add(i);
13
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) heap.poll();
19
14
  })
20
15
  .add(`${HUNDRED_THOUSAND.toLocaleString()} add & dfs`, () => {
21
16
  const heap = new Heap<number>([], { comparator: (a, b) => b - a });
22
-
23
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
24
- heap.add(i);
25
- }
26
-
17
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) heap.add(i);
27
18
  heap.dfs();
28
19
  })
29
20
  .add(`${TEN_THOUSAND.toLocaleString()} fib add & pop`, () => {
30
21
  const fbHeap = new FibonacciHeap<number>();
31
- for (let i = 1; i <= TEN_THOUSAND; i++) {
32
- fbHeap.push(i);
33
- }
34
- for (let i = 1; i <= TEN_THOUSAND; i++) {
35
- fbHeap.pop();
36
- }
22
+ for (let i = 1; i <= TEN_THOUSAND; i++) fbHeap.push(i);
23
+ for (let i = 1; i <= TEN_THOUSAND; i++) fbHeap.pop();
37
24
  });
38
25
 
39
26
  export { suite };
@@ -40,7 +40,6 @@ suite
40
40
  const list = new DoublyLinkedList<number>();
41
41
 
42
42
  for (let i = 0; i < MILLION; i++) list.unshift(i);
43
-
44
43
  for (let i = 0; i < MILLION; i++) list.shift();
45
44
  })
46
45
  .add(`${MILLION.toLocaleString()} addBefore`, () => {
@@ -10,14 +10,12 @@ suite
10
10
  const list = new SinglyLinkedList<number>();
11
11
 
12
12
  for (let i = 0; i < MILLION; i++) list.push(i);
13
-
14
13
  for (let i = 0; i < MILLION; i++) list.shift();
15
14
  })
16
15
  .add(`${TEN_THOUSAND.toLocaleString()} push & pop`, () => {
17
16
  const list = new SinglyLinkedList<number>();
18
17
 
19
18
  for (let i = 0; i < TEN_THOUSAND; i++) list.push(i);
20
-
21
19
  for (let i = 0; i < TEN_THOUSAND; i++) list.pop();
22
20
  })
23
21
  .add(`${TEN_THOUSAND.toLocaleString()} addBefore`, () => {
@@ -11,9 +11,7 @@ suite.add(`${TEN_THOUSAND.toLocaleString()} refill & poll`, () => {
11
11
  );
12
12
  const maxPQ = new MaxPriorityQueue<number>();
13
13
  maxPQ.refill(nodes);
14
- while (maxPQ.size > 0) {
15
- maxPQ.poll();
16
- }
14
+ while (maxPQ.size > 0) maxPQ.poll();
17
15
  });
18
16
 
19
- export { suite };
17
+ // export { suite };
@@ -10,25 +10,15 @@ const { HUNDRED_THOUSAND } = magnitude;
10
10
  suite.add(`${HUNDRED_THOUSAND.toLocaleString()} add & poll`, () => {
11
11
  const pq = new PriorityQueue<number>([], { comparator: (a, b) => b - a });
12
12
 
13
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
14
- pq.add(i);
15
- }
16
-
17
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
18
- pq.poll();
19
- }
13
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) pq.add(i);
14
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) pq.poll();
20
15
  });
21
16
  if (isCompetitor) {
22
17
  suite.add(`CPT ${HUNDRED_THOUSAND.toLocaleString()} add & pop`, () => {
23
18
  const pq = new CPriorityQueue<number>();
24
19
 
25
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
26
- pq.push(i);
27
- }
28
-
29
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
30
- pq.pop();
31
- }
20
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) pq.push(i);
21
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) pq.pop();
32
22
  });
33
23
  }
34
24
 
@@ -10,50 +10,33 @@ const { MILLION, HUNDRED_THOUSAND } = magnitude;
10
10
  suite.add(`${MILLION.toLocaleString()} push`, () => {
11
11
  const queue = new Queue<number>();
12
12
 
13
- for (let i = 0; i < MILLION; i++) {
14
- queue.push(i);
15
- }
13
+ for (let i = 0; i < MILLION; i++) queue.push(i);
16
14
  });
17
15
  if (isCompetitor) {
18
16
  suite.add(`CPT ${MILLION.toLocaleString()} push`, () => {
19
17
  const queue = new CQueue<number>();
20
18
 
21
- for (let i = 0; i < MILLION; i++) {
22
- queue.push(i);
23
- }
19
+ for (let i = 0; i < MILLION; i++) queue.push(i);
24
20
  });
25
21
  }
26
22
  suite.add(`${HUNDRED_THOUSAND.toLocaleString()} push & shift`, () => {
27
23
  const queue = new Queue<number>();
28
24
 
29
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
30
- queue.push(i);
31
- }
32
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
33
- queue.shift();
34
- }
25
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) queue.push(i);
26
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) queue.shift();
35
27
  });
36
28
  suite
37
29
  .add(`Native Array ${HUNDRED_THOUSAND.toLocaleString()} push & shift`, () => {
38
30
  const arr = new Array<number>();
39
31
 
40
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
41
- arr.push(i);
42
- }
43
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
44
- arr.shift();
45
- }
32
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) arr.push(i);
33
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) arr.shift();
46
34
  })
47
35
  .add(`Native Array ${HUNDRED_THOUSAND.toLocaleString()} push & pop`, () => {
48
36
  const arr = new Array<number>();
49
37
 
50
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
51
- arr.push(i);
52
- }
53
-
54
- for (let i = 0; i < HUNDRED_THOUSAND; i++) {
55
- arr.pop();
56
- }
38
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) arr.push(i);
39
+ for (let i = 0; i < HUNDRED_THOUSAND; i++) arr.pop();
57
40
  });
58
41
 
59
42
  export { suite };
@@ -10,39 +10,27 @@ const { MILLION } = magnitude;
10
10
  suite.add(`${MILLION.toLocaleString()} push`, () => {
11
11
  const stack = new Stack<number>();
12
12
 
13
- for (let i = 0; i < MILLION; i++) {
14
- stack.push(i);
15
- }
13
+ for (let i = 0; i < MILLION; i++) stack.push(i);
16
14
  });
17
15
  if (isCompetitor) {
18
16
  suite.add(`CPT ${MILLION.toLocaleString()} push`, () => {
19
17
  const queue = new CStack<number>();
20
18
 
21
- for (let i = 0; i < MILLION; i++) {
22
- queue.push(i);
23
- }
19
+ for (let i = 0; i < MILLION; i++) queue.push(i);
24
20
  });
25
21
  }
26
22
  suite.add(`${MILLION.toLocaleString()} push & pop`, () => {
27
23
  const queue = new Stack<number>();
28
24
 
29
- for (let i = 0; i < MILLION; i++) {
30
- queue.push(i);
31
- }
32
- for (let i = 0; i < MILLION; i++) {
33
- queue.pop();
34
- }
25
+ for (let i = 0; i < MILLION; i++) queue.push(i);
26
+ for (let i = 0; i < MILLION; i++) queue.pop();
35
27
  });
36
28
  if (isCompetitor) {
37
29
  suite.add(`CPT ${MILLION.toLocaleString()} push & pop`, () => {
38
30
  const queue = new CStack<number>();
39
31
 
40
- for (let i = 0; i < MILLION; i++) {
41
- queue.push(i);
42
- }
43
- for (let i = 0; i < MILLION; i++) {
44
- queue.pop();
45
- }
32
+ for (let i = 0; i < MILLION; i++) queue.push(i);
33
+ for (let i = 0; i < MILLION; i++) queue.pop();
46
34
  });
47
35
  }
48
36