diff --git a/README.md b/README.md
index 45d7e3d..6f78b55 100644
--- a/README.md
+++ b/README.md
@@ -658,37 +658,40 @@ optimal approach to data structure design.
[//]: # (Start of Replace Section)
avl-tree
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
1000 add randomly | 2.28 | 438.38 | 23 | 0.00 | 2.56e-5 |
1000 add & delete randomly | 5.16 | 193.94 | 11 | 0.01 | 7.96e-4 |
1000 addMany | 3.05 | 328.30 | 17 | 0.00 | 3.13e-4 |
1000 get | 2.08 | 480.72 | 25 | 0.00 | 9.01e-5 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add randomly | 32.75 | 30.53 | 9.04e-4 |
10,000 add & delete randomly | 69.59 | 14.37 | 0.00 |
10,000 addMany | 42.07 | 23.77 | 8.58e-4 |
10,000 get | 27.87 | 35.88 | 5.71e-4 |
binary-tree
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
1000 add randomly | 12.88 | 77.65 | 5 | 0.01 | 1.17e-4 |
1000 add & delete randomly | 15.95 | 62.70 | 4 | 0.02 | 1.78e-4 |
1000 addMany | 10.61 | 94.25 | 5 | 0.01 | 1.16e-4 |
1000 get | 18.02 | 55.51 | 3 | 0.02 | 1.59e-4 |
1000 dfs | 69.95 | 14.30 | 1 | 0.07 | 6.49e-4 |
1000 bfs | 54.78 | 18.25 | 1 | 0.05 | 4.98e-4 |
1000 morris | 37.26 | 26.83 | 2 | 0.04 | 2.16e-4 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000 add randomly | 12.84 | 77.86 | 1.92e-4 |
1,000 add & delete randomly | 15.94 | 62.72 | 3.07e-4 |
1,000 addMany | 10.59 | 94.45 | 1.67e-4 |
1,000 get | 17.99 | 55.59 | 2.35e-4 |
1,000 dfs | 70.17 | 14.25 | 8.83e-4 |
1,000 bfs | 54.52 | 18.34 | 7.43e-4 |
1,000 morris | 37.26 | 26.84 | 5.27e-4 |
bst
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
1000 add randomly | 2.02 | 496.10 | 25 | 0.00 | 1.56e-5 |
1000 add & delete randomly | 4.60 | 217.31 | 12 | 0.00 | 4.43e-4 |
1000 addMany | 2.23 | 448.71 | 24 | 0.00 | 2.96e-4 |
1000 get | 2.09 | 479.52 | 25 | 0.00 | 1.27e-5 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add randomly | 33.25 | 30.07 | 4.20e-4 |
10,000 add & delete randomly | 73.76 | 13.56 | 8.39e-4 |
10,000 addMany | 29.96 | 33.38 | 4.40e-4 |
10,000 get | 28.53 | 35.05 | 3.89e-4 |
+
+
rb-tree
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
100,000 add randomly | 74.41 | 13.44 | 0.00 |
100,000 add & 1000 delete randomly | 80.63 | 12.40 | 0.01 |
100,000 getNode | 60.00 | 16.67 | 0.01 |
directed-graph
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
1000 addVertex | 0.10 | 9871.96 | 501 | 1.01e-4 | 7.32e-7 |
1000 addEdge | 6.48 | 154.29 | 9 | 0.01 | 0.00 |
1000 getVertex | 0.05 | 2.17e+4 | 1110 | 4.61e-5 | 3.80e-7 |
1000 getEdge | 24.65 | 40.57 | 3 | 0.02 | 0.01 |
tarjan | 208.00 | 4.81 | 1 | 0.21 | 0.01 |
tarjan all | 212.97 | 4.70 | 1 | 0.21 | 0.00 |
topologicalSort | 171.49 | 5.83 | 1 | 0.17 | 0.01 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000 addVertex | 0.10 | 9856.40 | 1.79e-6 |
1,000 addEdge | 6.21 | 160.96 | 8.40e-4 |
1,000 getVertex | 0.05 | 2.16e+4 | 3.85e-7 |
1,000 getEdge | 22.43 | 44.57 | 0.00 |
tarjan | 219.40 | 4.56 | 0.03 |
tarjan all | 214.21 | 4.67 | 0.00 |
topologicalSort | 172.46 | 5.80 | 0.00 |
heap
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
1000 add & pop | 0.34 | 2929.81 | 149 | 3.41e-4 | 2.37e-6 |
1000 fib add & pop | 3.89 | 257.31 | 14 | 0.00 | 2.53e-5 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 add & pop | 4.63 | 215.75 | 4.05e-5 |
10,000 fib add & pop | 355.10 | 2.82 | 0.00 |
doubly-linked-list
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
1000000 unshift | 212.40 | 4.71 | 1 | 0.21 | 0.02 |
1000000 unshift & shift | 172.94 | 5.78 | 1 | 0.17 | 0.03 |
1000 insertBefore | 0.03 | 3.70e+4 | 1903 | 2.71e-5 | 2.38e-6 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 unshift | 210.62 | 4.75 | 0.05 |
1,000,000 unshift & shift | 176.63 | 5.66 | 0.04 |
1,000,000 insertBefore | 288.55 | 3.47 | 0.05 |
singly-linked-list
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
1000 push & pop | 1.75 | 571.73 | 30 | 0.00 | 5.06e-5 |
1000 insertBefore | 2.30 | 434.82 | 22 | 0.00 | 5.10e-5 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 push & pop | 232.24 | 4.31 | 0.03 |
10,000 insertBefore | 245.58 | 4.07 | 0.00 |
max-priority-queue
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
10000 refill & poll | 11.41 | 87.65 | 5 | 0.01 | 1.49e-4 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
10,000 refill & poll | 11.62 | 86.09 | 2.24e-4 |
deque
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
1000000 push | 212.51 | 4.71 | 1 | 0.21 | 0.06 |
1000000 shift | 24.98 | 40.04 | 3 | 0.02 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 push | 223.78 | 4.47 | 0.05 |
1,000,000 shift | 25.79 | 38.78 | 0.00 |
queue
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
1000000 push | 41.97 | 23.83 | 2 | 0.04 | 0.01 |
1000000 push & shift | 79.08 | 12.65 | 1 | 0.08 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
1,000,000 push | 44.27 | 22.59 | 0.01 |
1,000,000 push & shift | 79.63 | 12.56 | 0.00 |
trie
-
test name | time taken (ms) | executions per sec | executed times | sample mean (secs) | sample deviation |
---|
100000 push | 54.24 | 18.44 | 1 | 0.05 | 7.00e-4 |
100000 getWords | 96.12 | 10.40 | 1 | 0.10 | 0.00 |
+
test name | time taken (ms) | executions per sec | sample deviation |
---|
100,000 push | 49.29 | 20.29 | 0.00 |
100,000 getWords | 95.55 | 10.47 | 0.01 |
[//]: # (End of Replace Section)
\ No newline at end of file
diff --git a/src/data-structures/binary-tree/binary-tree.ts b/src/data-structures/binary-tree/binary-tree.ts
index c44befc..6a9378d 100644
--- a/src/data-structures/binary-tree/binary-tree.ts
+++ b/src/data-structures/binary-tree/binary-tree.ts
@@ -142,7 +142,7 @@ export class BinaryTree = BinaryTreeNode
}
protected defaultOneParamCallback = (node: N) => node.key;
-
+
/**
* Creates a new instance of BinaryTreeNode with the given key and value.
* @param {BTNKey} key - The key for the new node.
diff --git a/src/data-structures/binary-tree/bst.ts b/src/data-structures/binary-tree/bst.ts
index aa85a2e..21fdc07 100644
--- a/src/data-structures/binary-tree/bst.ts
+++ b/src/data-structures/binary-tree/bst.ts
@@ -36,7 +36,7 @@ export class BST = BSTNode>
}
}
}
-
+
/**
* The function creates a new binary search tree node with the given key and value.
* @param {BTNKey} key - The key parameter is the key value that will be associated with
diff --git a/src/data-structures/binary-tree/rb-tree.ts b/src/data-structures/binary-tree/rb-tree.ts
index a2cd4cc..8ee5d51 100644
--- a/src/data-structures/binary-tree/rb-tree.ts
+++ b/src/data-structures/binary-tree/rb-tree.ts
@@ -44,6 +44,12 @@ export class RedBlackTree {
return this._root;
}
+ protected _size: number = 0;
+
+ get size(): number {
+ return this._size;
+ }
+
/**
* The `insert` function inserts a new node with a given key into a red-black tree and fixes any
* violations of the red-black tree properties.
@@ -51,7 +57,7 @@ export class RedBlackTree {
* the RBTree.
* @returns The function does not explicitly return anything.
*/
- insert(key: number): void {
+ add(key: number): void {
const node: RBTreeNode = new RBTreeNode(key, RBTNColor.RED);
node.left = NIL;
node.right = NIL;
@@ -79,20 +85,23 @@ export class RedBlackTree {
if (node.parent === null) {
node.color = RBTNColor.BLACK;
+ this._size++;
return;
}
if (node.parent.parent === null) {
+ this._size++;
return;
}
this._fixInsert(node);
+ this._size++;
}
/**
* The `delete` function in TypeScript is used to remove a node with a specific key from a red-black
* tree.
- * @param {RBTreeNode} node - The `node` parameter is of type `RBTreeNode` and represents the current
+ * @param {number} key - The `node` parameter is of type `RBTreeNode` and represents the current
* node being processed in the delete operation.
* @returns The `delete` function does not return anything. It has a return type of `void`.
*/
@@ -113,6 +122,7 @@ export class RedBlackTree {
}
if (z === NIL) {
+ this._size--;
return;
}
@@ -144,6 +154,7 @@ export class RedBlackTree {
if (yOriginalColor === RBTNColor.BLACK) {
this._fixDelete(x);
}
+ this._size--;
};
helper(this.root);
}
@@ -241,6 +252,11 @@ export class RedBlackTree {
return y;
}
+ clear() {
+ this._root = NIL;
+ this._size = 0;
+ }
+
print(beginRoot: RBTreeNode = this.root) {
const display = (root: RBTreeNode | null): void => {
const [lines, , ,] = _displayAux(root);
diff --git a/test/performance/data-structures/binary-tree/avl-tree.test.ts b/test/performance/data-structures/binary-tree/avl-tree.test.ts
index f8a0d54..ca2a0a3 100644
--- a/test/performance/data-structures/binary-tree/avl-tree.test.ts
+++ b/test/performance/data-structures/binary-tree/avl-tree.test.ts
@@ -4,17 +4,17 @@ import {getRandomIntArray, magnitude} from '../../../utils';
const suite = new Benchmark.Suite();
const avl = new AVLTree();
-const {N_LOG_N} = magnitude;
-const arr = getRandomIntArray(N_LOG_N, 0, N_LOG_N, true);
+const {TEN_THOUSAND} = magnitude;
+const arr = getRandomIntArray(TEN_THOUSAND, 0, TEN_THOUSAND, true);
suite
- .add(`${N_LOG_N} add randomly`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} add randomly`, () => {
avl.clear();
for (let i = 0; i < arr.length; i++) {
avl.add(arr[i]);
}
})
- .add(`${N_LOG_N} add & delete randomly`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} add & delete randomly`, () => {
avl.clear();
for (let i = 0; i < arr.length; i++) {
avl.add(arr[i]);
@@ -23,11 +23,11 @@ suite
avl.delete(arr[i]);
}
})
- .add(`${N_LOG_N} addMany`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} addMany`, () => {
avl.clear();
avl.addMany(arr);
})
- .add(`${N_LOG_N} get`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} get`, () => {
for (let i = 0; i < arr.length; i++) {
avl.get(arr[i]);
}
diff --git a/test/performance/data-structures/binary-tree/binary-tree.test.ts b/test/performance/data-structures/binary-tree/binary-tree.test.ts
index 416afeb..21a4dc0 100644
--- a/test/performance/data-structures/binary-tree/binary-tree.test.ts
+++ b/test/performance/data-structures/binary-tree/binary-tree.test.ts
@@ -8,13 +8,13 @@ const {N_LOG_N} = magnitude;
const arr = getRandomIntArray(N_LOG_N, 0, N_LOG_N, true);
suite
- .add(`${N_LOG_N} add randomly`, () => {
+ .add(`${N_LOG_N.toLocaleString()} add randomly`, () => {
biTree.clear();
for (let i = 0; i < arr.length; i++) {
biTree.add(arr[i]);
}
})
- .add(`${N_LOG_N} add & delete randomly`, () => {
+ .add(`${N_LOG_N.toLocaleString()} add & delete randomly`, () => {
biTree.clear();
for (let i = 0; i < arr.length; i++) {
biTree.add(arr[i]);
@@ -23,22 +23,22 @@ suite
biTree.delete(arr[i]);
}
})
- .add(`${N_LOG_N} addMany`, () => {
+ .add(`${N_LOG_N.toLocaleString()} addMany`, () => {
biTree.clear();
biTree.addMany(arr);
})
- .add(`${N_LOG_N} get`, () => {
+ .add(`${N_LOG_N.toLocaleString()} get`, () => {
for (let i = 0; i < arr.length; i++) {
biTree.get(arr[i]);
}
})
- .add(`${N_LOG_N} dfs`, () => {
+ .add(`${N_LOG_N.toLocaleString()} dfs`, () => {
for (let i = 0; i < N_LOG_N; i++) biTree.dfs();
})
- .add(`${N_LOG_N} bfs`, () => {
+ .add(`${N_LOG_N.toLocaleString()} bfs`, () => {
for (let i = 0; i < N_LOG_N; i++) biTree.bfs();
})
- .add(`${N_LOG_N} morris`, () => {
+ .add(`${N_LOG_N.toLocaleString()} morris`, () => {
for (let i = 0; i < N_LOG_N; i++) biTree.morris(n => n, 'pre');
});
diff --git a/test/performance/data-structures/binary-tree/bst.test.ts b/test/performance/data-structures/binary-tree/bst.test.ts
index 65e888d..b787c4b 100644
--- a/test/performance/data-structures/binary-tree/bst.test.ts
+++ b/test/performance/data-structures/binary-tree/bst.test.ts
@@ -4,17 +4,17 @@ import {getRandomIntArray, magnitude} from '../../../utils';
const suite = new Benchmark.Suite();
const bst = new BST();
-const {N_LOG_N} = magnitude;
-const arr = getRandomIntArray(N_LOG_N, 0, N_LOG_N, true);
+const {TEN_THOUSAND} = magnitude;
+const arr = getRandomIntArray(TEN_THOUSAND, 0, TEN_THOUSAND, true);
suite
- .add(`${N_LOG_N} add randomly`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} add randomly`, () => {
bst.clear();
for (let i = 0; i < arr.length; i++) {
bst.add(arr[i]);
}
})
- .add(`${N_LOG_N} add & delete randomly`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} add & delete randomly`, () => {
bst.clear();
for (let i = 0; i < arr.length; i++) {
bst.add(arr[i]);
@@ -23,11 +23,11 @@ suite
bst.delete(arr[i]);
}
})
- .add(`${N_LOG_N} addMany`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} addMany`, () => {
bst.clear();
bst.addMany(arr);
})
- .add(`${N_LOG_N} get`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} get`, () => {
for (let i = 0; i < arr.length; i++) {
bst.get(arr[i]);
}
diff --git a/test/performance/data-structures/binary-tree/rb-tree.test.ts b/test/performance/data-structures/binary-tree/rb-tree.test.ts
index e69de29..a3da096 100644
--- a/test/performance/data-structures/binary-tree/rb-tree.test.ts
+++ b/test/performance/data-structures/binary-tree/rb-tree.test.ts
@@ -0,0 +1,32 @@
+import {RedBlackTree} from '../../../../src';
+import * as Benchmark from 'benchmark';
+import {getRandomIntArray, magnitude} from '../../../utils';
+
+const suite = new Benchmark.Suite();
+const rbTree = new RedBlackTree();
+const {HUNDRED_THOUSAND} = magnitude;
+const arr = getRandomIntArray(HUNDRED_THOUSAND, 0, HUNDRED_THOUSAND, true);
+
+suite
+ .add(`${HUNDRED_THOUSAND.toLocaleString()} add randomly`, () => {
+ rbTree.clear();
+ for (let i = 0; i < arr.length; i++) {
+ rbTree.add(arr[i]);
+ }
+ })
+ .add(`${HUNDRED_THOUSAND.toLocaleString()} add & 1000 delete randomly`, () => {
+ rbTree.clear();
+ for (let i = 0; i < arr.length; i++) {
+ rbTree.add(arr[i]);
+ }
+ for (let i = 0; i < 1000; i++) {
+ rbTree.delete(arr[i]);
+ }
+ })
+ .add(`${HUNDRED_THOUSAND.toLocaleString()} getNode`, () => {
+ for (let i = 0; i < arr.length; i++) {
+ rbTree.getNode(arr[i]);
+ }
+ });
+
+export {suite};
diff --git a/test/performance/data-structures/graph/directed-graph.test.ts b/test/performance/data-structures/graph/directed-graph.test.ts
index fd5376f..c8719d6 100644
--- a/test/performance/data-structures/graph/directed-graph.test.ts
+++ b/test/performance/data-structures/graph/directed-graph.test.ts
@@ -8,24 +8,24 @@ const graph = new DirectedGraph();
const vertexes = getRandomWords(THOUSAND);
suite
- .add(`${THOUSAND} addVertex`, () => {
+ .add(`${THOUSAND.toLocaleString()} addVertex`, () => {
for (const v of vertexes) {
graph.addVertex(v);
}
})
- .add(`${THOUSAND} addEdge`, () => {
+ .add(`${THOUSAND.toLocaleString()} addEdge`, () => {
for (let i = 0; i < THOUSAND; i++) {
const v1 = vertexes[getRandomIndex(vertexes)];
const v2 = vertexes[getRandomIndex(vertexes)];
graph.addEdge(v1, v2);
}
})
- .add(`${THOUSAND} getVertex`, () => {
+ .add(`${THOUSAND.toLocaleString()} getVertex`, () => {
for (let i = 0; i < THOUSAND; i++) {
graph.getVertex(vertexes[getRandomIndex(vertexes)]);
}
})
- .add(`${THOUSAND} getEdge`, () => {
+ .add(`${THOUSAND.toLocaleString()} getEdge`, () => {
for (let i = 0; i < THOUSAND; i++) {
graph.getEdge(vertexes[getRandomIndex(vertexes)], vertexes[getRandomIndex(vertexes)]);
}
diff --git a/test/performance/data-structures/heap/heap.test.ts b/test/performance/data-structures/heap/heap.test.ts
index d0fd2e8..a55c311 100644
--- a/test/performance/data-structures/heap/heap.test.ts
+++ b/test/performance/data-structures/heap/heap.test.ts
@@ -3,26 +3,26 @@ import * as Benchmark from 'benchmark';
import {magnitude} from '../../../utils';
const suite = new Benchmark.Suite();
-const {N_LOG_N} = magnitude;
+const {TEN_THOUSAND} = magnitude;
suite
- .add(`${N_LOG_N} add & pop`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} add & pop`, () => {
const heap = new Heap({comparator: (a, b) => b - a});
- for (let i = 0; i < N_LOG_N; i++) {
+ for (let i = 0; i < TEN_THOUSAND; i++) {
heap.add(i);
}
- for (let i = 0; i < N_LOG_N; i++) {
+ for (let i = 0; i < TEN_THOUSAND; i++) {
heap.pop();
}
})
- .add(`${N_LOG_N} fib add & pop`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} fib add & pop`, () => {
const fbHeap = new FibonacciHeap();
- for (let i = 1; i <= N_LOG_N; i++) {
+ for (let i = 1; i <= TEN_THOUSAND; i++) {
fbHeap.push(i);
}
- for (let i = 1; i <= N_LOG_N; i++) {
+ for (let i = 1; i <= TEN_THOUSAND; i++) {
fbHeap.pop();
}
});
diff --git a/test/performance/data-structures/linked-list/doubly-linked-list.test.ts b/test/performance/data-structures/linked-list/doubly-linked-list.test.ts
index c181260..5cc9977 100644
--- a/test/performance/data-structures/linked-list/doubly-linked-list.test.ts
+++ b/test/performance/data-structures/linked-list/doubly-linked-list.test.ts
@@ -3,17 +3,17 @@ import * as Benchmark from 'benchmark';
import {magnitude} from '../../../utils';
const suite = new Benchmark.Suite();
-const {LINEAR, N_LOG_N} = magnitude;
+const {LINEAR} = magnitude;
suite
- .add(`${LINEAR} unshift`, () => {
+ .add(`${LINEAR.toLocaleString()} unshift`, () => {
const list = new DoublyLinkedList();
for (let i = 0; i < LINEAR; i++) {
list.unshift(i);
}
})
- .add(`${LINEAR} unshift & shift`, () => {
+ .add(`${LINEAR.toLocaleString()} unshift & shift`, () => {
const list = new DoublyLinkedList();
for (let i = 0; i < LINEAR; i++) {
@@ -23,11 +23,11 @@ suite
list.shift();
}
})
- .add(`${N_LOG_N} insertBefore`, () => {
+ .add(`${LINEAR.toLocaleString()} insertBefore`, () => {
const doublyList = new DoublyLinkedList();
let midNode: DoublyLinkedListNode | null = null;
- const midIndex = Math.floor(N_LOG_N / 2);
- for (let i = 0; i < N_LOG_N; i++) {
+ const midIndex = Math.floor(LINEAR / 2);
+ for (let i = 0; i < LINEAR; i++) {
doublyList.push(i);
if (i === midIndex) {
midNode = doublyList.getNode(i);
diff --git a/test/performance/data-structures/linked-list/singly-linked-list.test.ts b/test/performance/data-structures/linked-list/singly-linked-list.test.ts
index 7c9e852..4802321 100644
--- a/test/performance/data-structures/linked-list/singly-linked-list.test.ts
+++ b/test/performance/data-structures/linked-list/singly-linked-list.test.ts
@@ -3,25 +3,25 @@ import * as Benchmark from 'benchmark';
import {magnitude} from '../../../utils';
const suite = new Benchmark.Suite();
-const {N_LOG_N} = magnitude;
+const {TEN_THOUSAND} = magnitude;
suite
- .add(`${N_LOG_N} push & pop`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} push & pop`, () => {
const list = new SinglyLinkedList();
- for (let i = 0; i < N_LOG_N; i++) {
+ for (let i = 0; i < TEN_THOUSAND; i++) {
list.push(i);
}
- for (let i = 0; i < N_LOG_N; i++) {
+ for (let i = 0; i < TEN_THOUSAND; i++) {
list.pop();
}
})
- .add(`${N_LOG_N} insertBefore`, () => {
+ .add(`${TEN_THOUSAND.toLocaleString()} insertBefore`, () => {
const singlyList = new SinglyLinkedList();
let midSinglyNode: SinglyLinkedListNode | null = null;
- const midIndex = Math.floor(N_LOG_N / 2);
- for (let i = 0; i < N_LOG_N; i++) {
+ const midIndex = Math.floor(TEN_THOUSAND / 2);
+ for (let i = 0; i < TEN_THOUSAND; i++) {
singlyList.push(i);
if (i === midIndex) {
midSinglyNode = singlyList.getNode(i);
diff --git a/test/performance/data-structures/priority-queue/max-priority-queue.test.ts b/test/performance/data-structures/priority-queue/max-priority-queue.test.ts
index 430e20b..ef44072 100644
--- a/test/performance/data-structures/priority-queue/max-priority-queue.test.ts
+++ b/test/performance/data-structures/priority-queue/max-priority-queue.test.ts
@@ -5,7 +5,7 @@ import {magnitude} from '../../../utils';
const suite = new Benchmark.Suite();
const {TEN_THOUSAND} = magnitude;
-suite.add(`${TEN_THOUSAND} refill & poll`, () => {
+suite.add(`${TEN_THOUSAND.toLocaleString()} refill & poll`, () => {
const nodes = Array.from(
new Set(Array.from(new Array(TEN_THOUSAND), () => Math.floor(Math.random() * TEN_THOUSAND * 100)))
);
diff --git a/test/performance/data-structures/queue/deque.test.ts b/test/performance/data-structures/queue/deque.test.ts
index e377199..566b370 100644
--- a/test/performance/data-structures/queue/deque.test.ts
+++ b/test/performance/data-structures/queue/deque.test.ts
@@ -6,13 +6,13 @@ export const suite = new Benchmark.Suite();
const {LINEAR} = magnitude;
suite
- .add(`${LINEAR} push`, () => {
+ .add(`${LINEAR.toLocaleString()} push`, () => {
const deque = new Deque();
for (let i = 0; i < LINEAR; i++) {
deque.push(i);
}
})
- .add(`${LINEAR} shift`, () => {
+ .add(`${LINEAR.toLocaleString()} shift`, () => {
const deque = new Deque();
for (let i = 0; i < LINEAR; i++) {
deque.push(i);
diff --git a/test/performance/data-structures/queue/queue.test.ts b/test/performance/data-structures/queue/queue.test.ts
index 689cac0..a5b5874 100644
--- a/test/performance/data-structures/queue/queue.test.ts
+++ b/test/performance/data-structures/queue/queue.test.ts
@@ -6,14 +6,14 @@ const suite = new Benchmark.Suite();
const {LINEAR} = magnitude;
suite
- .add(`${LINEAR} push`, () => {
+ .add(`${LINEAR.toLocaleString()} push`, () => {
const queue = new Queue();
for (let i = 0; i < LINEAR; i++) {
queue.push(i);
}
})
- .add(`${LINEAR} push & shift`, () => {
+ .add(`${LINEAR.toLocaleString()} push & shift`, () => {
const queue = new Queue();
for (let i = 0; i < LINEAR; i++) {
diff --git a/test/performance/data-structures/trie/trie.test.ts b/test/performance/data-structures/trie/trie.test.ts
index a448dd2..433104b 100644
--- a/test/performance/data-structures/trie/trie.test.ts
+++ b/test/performance/data-structures/trie/trie.test.ts
@@ -8,12 +8,12 @@ const trie = new Trie();
const randomWords = getRandomWords(HUNDRED_THOUSAND, false);
suite
- .add(`${HUNDRED_THOUSAND} push`, () => {
+ .add(`${HUNDRED_THOUSAND.toLocaleString()} push`, () => {
for (let i = 0; i < randomWords.length; i++) {
trie.add(randomWords[i]);
}
})
- .add(`${HUNDRED_THOUSAND} getWords`, () => {
+ .add(`${HUNDRED_THOUSAND.toLocaleString()} getWords`, () => {
for (let i = 0; i < randomWords.length; i++) {
trie.getWords(randomWords[i]);
}
diff --git a/test/performance/reportor.ts b/test/performance/reportor.ts
index 10cd22b..e0c585b 100644
--- a/test/performance/reportor.ts
+++ b/test/performance/reportor.ts
@@ -126,11 +126,10 @@ function replaceMarkdownContent(startMarker: string, endMarker: string, newText:
}
// Replace the old content with the new text
- const updatedMarkdown =
- data.slice(0, startIndex + startMarker.length) + '\n' + newText + data.slice(endIndex);
+ const updatedMarkdown = data.slice(0, startIndex + startMarker.length) + '\n' + newText + data.slice(endIndex);
// Try writing the modified content back to the file
- fs.writeFile(filePath, updatedMarkdown, 'utf8', (err) => {
+ fs.writeFile(filePath, updatedMarkdown, 'utf8', err => {
if (err) {
console.error(`Unable to write to ${filePath}:`, err);
} else {
@@ -145,7 +144,7 @@ performanceTests.forEach(item => {
const relativeFilePath = path.relative(__dirname, file);
const directory = path.dirname(relativeFilePath);
const fileName = path.basename(relativeFilePath);
- console.log(`${BG_YELLOW}Running in${END}: ${GRAY}${directory}/${END}${CYAN}${fileName}${END}`);
+ console.log(`${BG_YELLOW} Running ${END} ${GRAY}${directory}/${END}${CYAN}${fileName}${END}`);
if (suite) {
let runTime = 0;
@@ -159,8 +158,8 @@ performanceTests.forEach(item => {
'test name': benchmark.name,
'time taken (ms)': numberFix(benchmark.times.period * 1000, 2),
'executions per sec': numberFix(benchmark.hz, 2),
- 'executed times': numberFix(benchmark.count, 0),
- 'sample mean (secs)': numberFix(benchmark.stats.mean, 2),
+ // 'executed times': numberFix(benchmark.count, 0),
+ // 'sample mean (secs)': numberFix(benchmark.stats.mean, 2),
'sample deviation': numberFix(benchmark.stats.deviation, 2)
};
});
diff --git a/test/unit/data-structures/binary-tree/rb-tree.test.ts b/test/unit/data-structures/binary-tree/rb-tree.test.ts
index 2da8475..1a2e085 100644
--- a/test/unit/data-structures/binary-tree/rb-tree.test.ts
+++ b/test/unit/data-structures/binary-tree/rb-tree.test.ts
@@ -11,11 +11,11 @@ describe('RedBlackTree', () => {
tree = new RedBlackTree();
});
- describe('insert and getNode', () => {
- test('should insert and find a node in the tree', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
+ describe('add and getNode', () => {
+ test('should add and find a node in the tree', () => {
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
expect(tree.getNode(10)).toBeInstanceOf(RBTreeNode);
expect(tree.getNode(20)).toBeInstanceOf(RBTreeNode);
@@ -23,9 +23,9 @@ describe('RedBlackTree', () => {
expect(tree.getNode(15)).toBe(null);
});
- test('should insert and find nodes with negative keys', () => {
- tree.insert(-10);
- tree.insert(-20);
+ test('should add and find nodes with negative keys', () => {
+ tree.add(-10);
+ tree.add(-20);
expect(tree.getNode(-10)).toBeInstanceOf(RBTreeNode);
expect(tree.getNode(-20)).toBeInstanceOf(RBTreeNode);
@@ -34,18 +34,18 @@ describe('RedBlackTree', () => {
describe('deleteNode', () => {
test('should delete a node from the tree', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
tree.delete(20);
expect(tree.getNode(20)).toBe(null);
});
test('should handle deleting a non-existent node', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
tree.delete(15);
expect(tree.getNode(15)).toBe(null);
@@ -54,11 +54,11 @@ describe('RedBlackTree', () => {
describe('minimum', () => {
test('should find the minimum node in the tree', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
- tree.insert(15);
- tree.insert(3);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
+ tree.add(15);
+ tree.add(3);
const minNode = tree.getLeftMost(tree.root);
expect(minNode.key).toBe(3);
@@ -72,11 +72,11 @@ describe('RedBlackTree', () => {
describe('getRightMost', () => {
test('should find the getRightMost node in the tree', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
- tree.insert(15);
- tree.insert(25);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
+ tree.add(15);
+ tree.add(25);
const maxNode = tree.getRightMost(tree.root);
expect(maxNode.key).toBe(25);
@@ -90,11 +90,11 @@ describe('RedBlackTree', () => {
describe('getSuccessor', () => {
test('should find the getSuccessor of a node', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
- tree.insert(15);
- tree.insert(25);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
+ tree.add(15);
+ tree.add(25);
const node = tree.getNode(15);
const successorNode = tree.getSuccessor(node);
@@ -103,8 +103,8 @@ describe('RedBlackTree', () => {
});
test('should handle a node with no getSuccessor', () => {
- tree.insert(10);
- tree.insert(5);
+ tree.add(10);
+ tree.add(5);
const node = tree.getNode(10);
const successorNode = tree.getSuccessor(node);
@@ -115,11 +115,11 @@ describe('RedBlackTree', () => {
describe('getPredecessor', () => {
test('should find the getPredecessor of a node', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
- tree.insert(15);
- tree.insert(25);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
+ tree.add(15);
+ tree.add(25);
const node = tree.getNode(20);
const predecessorNode = tree.getPredecessor(node);
@@ -128,8 +128,8 @@ describe('RedBlackTree', () => {
});
test('should handle a node with no getPredecessor', () => {
- tree.insert(10);
- tree.insert(20);
+ tree.add(10);
+ tree.add(20);
const node = tree.getNode(20);
const predecessorNode = tree.getPredecessor(node);
@@ -146,69 +146,69 @@ describe('RedBlackTree', () => {
tree = new RedBlackTree();
});
- it('should insert nodes into the tree', () => {
- tree.insert(10);
+ it('should add nodes into the tree', () => {
+ tree.add(10);
expect(tree.getNode(10)).toBeDefined();
- tree.insert(20);
+ tree.add(20);
expect(tree.getNode(20)).toBeDefined();
- tree.insert(5);
+ tree.add(5);
expect(tree.getNode(5)).toBeDefined();
});
it('should delete nodes from the tree', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
tree.delete(20);
expect(tree.getNode(20)).toBe(null);
});
it('should get the successor of a node', () => {
- tree.insert(10);
- tree.insert(20);
+ tree.add(10);
+ tree.add(20);
const node = tree.getNode(10);
const successor = tree.getSuccessor(node);
expect(successor?.key).toBe(20);
});
it('should get the predecessor of a node', () => {
- tree.insert(10);
- tree.insert(20);
+ tree.add(10);
+ tree.add(20);
const node = tree.getNode(20);
const predecessor = tree.getPredecessor(node);
expect(predecessor?.key).toBe(10);
});
it('should rotate nodes to the left', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
const node = tree.getNode(10);
- tree.insert(15);
+ tree.add(15);
// Verify that rotation has occurred
expect(node.left.key).toBe(5);
expect(node.right.key).toBe(20);
});
it('should rotate nodes to the right', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
const node = tree.getNode(20);
- tree.insert(25);
+ tree.add(25);
// Verify that rotation has occurred
expect(node.left.key).toBe(0);
expect(node.right.key).toBe(25);
});
it('should all node attributes fully conform to the red-black tree standards.', () => {
- tree.insert(10);
- tree.insert(20);
- tree.insert(5);
- tree.insert(15);
- tree.insert(21);
- tree.insert(6);
- tree.insert(2);
+ tree.add(10);
+ tree.add(20);
+ tree.add(5);
+ tree.add(15);
+ tree.add(21);
+ tree.add(6);
+ tree.add(2);
let node10F = tree.getNode(10);
let node20F = tree.getNode(20);
@@ -344,31 +344,31 @@ describe('RedBlackTree', () => {
});
it('should fix the tree after insertion', () => {
- tree.insert(1);
- tree.insert(2);
- tree.insert(5);
- tree.insert(15);
+ tree.add(1);
+ tree.add(2);
+ tree.add(5);
+ tree.add(15);
const node15F = tree.getNode(15);
expect(node15F.left).toBe(NIL);
expect(node15F.right).toBe(NIL);
expect(node15F.parent).toBe(tree.getNode(5));
- tree.insert(25);
- tree.insert(10);
- tree.insert(8);
- tree.insert(28);
- tree.insert(111);
- tree.insert(12);
+ tree.add(25);
+ tree.add(10);
+ tree.add(8);
+ tree.add(28);
+ tree.add(111);
+ tree.add(12);
tree.delete(2);
- tree.insert(22);
- tree.insert(50);
- tree.insert(155);
- tree.insert(225);
+ tree.add(22);
+ tree.add(50);
+ tree.add(155);
+ tree.add(225);
const node225F = tree.getNode(225);
expect(node225F.left).toBe(NIL);
expect(node225F.right).toBe(NIL);
expect(node225F.parent.key).toBe(155);
- tree.insert(7);
+ tree.add(7);
const node15S = tree.getNode(15);
expect(node15S.left.key).toBe(8);
@@ -382,9 +382,9 @@ describe('RedBlackTree', () => {
const node15T = tree.getNode(15);
expect(node15T).toBe(null);
- tree.insert(23);
- tree.insert(33);
- tree.insert(15);
+ tree.add(23);
+ tree.add(33);
+ tree.add(15);
const nodeLM = tree.getLeftMost();
expect(nodeLM.key).toBe(1);
@@ -402,33 +402,33 @@ describe('RedBlackTree', () => {
expect(node225S.right).toBe(NIL);
expect(node225S.parent.key).toBe(155);
expect(tree.getNode(0)).toBe(null);
- tree.insert(1);
- tree.insert(2);
- tree.insert(3);
- tree.insert(4);
- tree.insert(5);
- tree.insert(6);
- tree.insert(7);
- tree.insert(8);
- tree.insert(9);
- tree.insert(10);
- tree.insert(11);
- tree.insert(12);
- tree.insert(13);
- tree.insert(14);
- tree.insert(15);
- tree.insert(16);
- tree.insert(17);
- tree.insert(18);
- tree.insert(19);
- tree.insert(110);
+ tree.add(1);
+ tree.add(2);
+ tree.add(3);
+ tree.add(4);
+ tree.add(5);
+ tree.add(6);
+ tree.add(7);
+ tree.add(8);
+ tree.add(9);
+ tree.add(10);
+ tree.add(11);
+ tree.add(12);
+ tree.add(13);
+ tree.add(14);
+ tree.add(15);
+ tree.add(16);
+ tree.add(17);
+ tree.add(18);
+ tree.add(19);
+ tree.add(110);
isDebug && tree.print();
});
it('should fix the tree after insertion and deletion', () => {
for (let i = 0; i < 100; i++) {
- tree.insert(getRandomInt(-100, 1000));
+ tree.add(getRandomInt(-100, 1000));
tree.delete(getRandomInt(-100, 1000));
}
});
diff --git a/test/unit/data-structures/graph/salty-edges.json b/test/unit/data-structures/graph/salty-edges.json
new file mode 100644
index 0000000..5bbc784
--- /dev/null
+++ b/test/unit/data-structures/graph/salty-edges.json
@@ -0,0 +1 @@
+[[{"name":"Intersection_1"},{"name":"Intersection_2","weight":28}],[{"name":"Intersection_1"},{"name":"Intersection_14","weight":44}],[{"name":"Intersection_2"},{"name":"Intersection_3","weight":8}],[{"name":"Intersection_2"},{"name":"Intersection_14","weight":44}],[{"name":"Intersection_3"},{"name":"Intersection_4","weight":31}],[{"name":"Intersection_3"},{"name":"Intersection_22","weight":45}],[{"name":"Intersection_4"},{"name":"Intersection_5","weight":37}],[{"name":"Intersection_4"},{"name":"Intersection_24","weight":40}],[{"name":"Intersection_5"},{"name":"Intersection_6","weight":32}],[{"name":"Intersection_5"},{"name":"Intersection_26","weight":34}],[{"name":"Intersection_6"},{"name":"Intersection_7","weight":30}],[{"name":"Intersection_7"},{"name":"Intersection_8","weight":53}],[{"name":"Intersection_7"},{"name":"Intersection_27","weight":0}],[{"name":"Intersection_8"},{"name":"Intersection_9","weight":33}],[{"name":"Intersection_8"},{"name":"Intersection_47","weight":38}],[{"name":"Intersection_9"},{"name":"Intersection_10","weight":28}],[{"name":"Intersection_9"},{"name":"Intersection_62","weight":31}],[{"name":"Intersection_10"},{"name":"Intersection_11","weight":18}],[{"name":"Intersection_10"},{"name":"Intersection_59","weight":45}],[{"name":"Intersection_11"},{"name":"Intersection_12","weight":28}],[{"name":"Intersection_11"},{"name":"Intersection_58","weight":21}],[{"name":"Intersection_12"},{"name":"Intersection_13","weight":35}],[{"name":"Intersection_12"},{"name":"Intersection_57","weight":22}],[{"name":"Intersection_14"},{"name":"Intersection_15","weight":40}],[{"name":"Intersection_15"},{"name":"Intersection_16","weight":43}],[{"name":"Intersection_15"},{"name":"Intersection_23","weight":27}],[{"name":"Intersection_16"},{"name":"Intersection_17","weight":14}],[{"name":"Intersection_17"},{"name":"Intersection_18","weight":51}],[{"name":"Intersection_18"},{"name":"Intersection_19","weight":29}],[{"name":"Intersection_19"},{"name":"Intersection_20","weight":34}],[{"name":"Intersection_20"},{"name":"Intersection_21","weight":43}],[{"name":"Intersection_20"},{"name":"Intersection_66","weight":24}],[{"name":"Intersection_21"},{"name":"Intersection_52","weight":36}],[{"name":"Intersection_22"},{"name":"Intersection_23","weight":27}],[{"name":"Intersection_23"},{"name":"Intersection_33","weight":10}],[{"name":"Intersection_24"},{"name":"Intersection_25","weight":24}],[{"name":"Intersection_24"},{"name":"Intersection_22","weight":45}],[{"name":"Intersection_25"},{"name":"Intersection_34","weight":23}],[{"name":"Intersection_26"},{"name":"Intersection_30","weight":5}],[{"name":"Intersection_27"},{"name":"Intersection_28","weight":25}],[{"name":"Intersection_27"},{"name":"Intersection_45","weight":6}],[{"name":"Intersection_28"},{"name":"Intersection_29","weight":21}],[{"name":"Intersection_29"},{"name":"Intersection_26","weight":34}],[{"name":"Intersection_29"},{"name":"Intersection_41","weight":23}],[{"name":"Intersection_30"},{"name":"Intersection_24","weight":40}],[{"name":"Intersection_30"},{"name":"Intersection_31","weight":18}],[{"name":"Intersection_31"},{"name":"Intersection_32","weight":11}],[{"name":"Intersection_32"},{"name":"Intersection_35","weight":21}],[{"name":"Intersection_33"},{"name":"Intersection_25","weight":24}],[{"name":"Intersection_33"},{"name":"Intersection_42","weight":32}],[{"name":"Intersection_34"},{"name":"Intersection_32","weight":11}],[{"name":"Intersection_34"},{"name":"Intersection_42","weight":32}],[{"name":"Intersection_35"},{"name":"Intersection_36","weight":25}],[{"name":"Intersection_35"},{"name":"Intersection_43","weight":23}],[{"name":"Intersection_36"},{"name":"Intersection_37","weight":37}],[{"name":"Intersection_37"},{"name":"Intersection_49","weight":19}],[{"name":"Intersection_38"},{"name":"Intersection_39","weight":29}],[{"name":"Intersection_38"},{"name":"Intersection_46","weight":31}],[{"name":"Intersection_39"},{"name":"Intersection_40","weight":22}],[{"name":"Intersection_39"},{"name":"Intersection_46","weight":31}],[{"name":"Intersection_40"},{"name":"Intersection_41","weight":23}],[{"name":"Intersection_41"},{"name":"Intersection_31","weight":18}],[{"name":"Intersection_42"},{"name":"Intersection_16","weight":43}],[{"name":"Intersection_42"},{"name":"Intersection_43","weight":23}],[{"name":"Intersection_43"},{"name":"Intersection_44","weight":23}],[{"name":"Intersection_43"},{"name":"Intersection_17","weight":14}],[{"name":"Intersection_45"},{"name":"Intersection_39","weight":29}],[{"name":"Intersection_46"},{"name":"Intersection_48","weight":4}],[{"name":"Intersection_47"},{"name":"Intersection_38","weight":0}],[{"name":"Intersection_47"},{"name":"Intersection_45","weight":6}],[{"name":"Intersection_48"},{"name":"Intersection_37","weight":37}],[{"name":"Intersection_48"},{"name":"Intersection_63","weight":38}],[{"name":"Intersection_49"},{"name":"Intersection_19","weight":29}],[{"name":"Intersection_49"},{"name":"Intersection_51","weight":42}],[{"name":"Intersection_50"},{"name":"Intersection_49","weight":19}],[{"name":"Intersection_51"},{"name":"Intersection_66","weight":24}],[{"name":"Intersection_52"},{"name":"Intersection_53","weight":31}],[{"name":"Intersection_53"},{"name":"Intersection_54","weight":42}],[{"name":"Intersection_54"},{"name":"Intersection_55","weight":18}],[{"name":"Intersection_54"},{"name":"Intersection_61","weight":28}],[{"name":"Intersection_55"},{"name":"Intersection_56","weight":15}],[{"name":"Intersection_56"},{"name":"Intersection_13","weight":35}],[{"name":"Intersection_57"},{"name":"Intersection_56","weight":15}],[{"name":"Intersection_58"},{"name":"Intersection_57","weight":22}],[{"name":"Intersection_58"},{"name":"Intersection_65","weight":19}],[{"name":"Intersection_59"},{"name":"Intersection_60","weight":40}],[{"name":"Intersection_59"},{"name":"Intersection_62","weight":31}],[{"name":"Intersection_60"},{"name":"Intersection_53","weight":31}],[{"name":"Intersection_61"},{"name":"Intersection_59","weight":45}],[{"name":"Intersection_62"},{"name":"Intersection_47","weight":38}],[{"name":"Intersection_62"},{"name":"Intersection_63","weight":38}],[{"name":"Intersection_63"},{"name":"Intersection_64","weight":16}],[{"name":"Intersection_64"},{"name":"Intersection_60","weight":40}],[{"name":"Intersection_64"},{"name":"Intersection_51","weight":42}],[{"name":"Intersection_65"},{"name":"Intersection_61","weight":28}],[{"name":"Intersection_65"},{"name":"Intersection_55","weight":18}],[{"name":"Intersection_66"},{"name":"Intersection_52","weight":36}]]
\ No newline at end of file
diff --git a/test/unit/data-structures/graph/salty-vertexes.json b/test/unit/data-structures/graph/salty-vertexes.json
new file mode 100644
index 0000000..50035b3
--- /dev/null
+++ b/test/unit/data-structures/graph/salty-vertexes.json
@@ -0,0 +1 @@
+[{"name":"Intersection_1"},{"name":"Intersection_2"},{"name":"Intersection_3"},{"name":"Intersection_4"},{"name":"Intersection_5"},{"name":"Intersection_6"},{"name":"Intersection_7"},{"name":"Intersection_8"},{"name":"Intersection_9"},{"name":"Intersection_10"},{"name":"Intersection_11"},{"name":"Intersection_12"},{"name":"Intersection_13"},{"name":"Intersection_14"},{"name":"Intersection_15"},{"name":"Intersection_16"},{"name":"Intersection_17"},{"name":"Intersection_18"},{"name":"Intersection_19"},{"name":"Intersection_20"},{"name":"Intersection_21"},{"name":"Intersection_22"},{"name":"Intersection_23"},{"name":"Intersection_24"},{"name":"Intersection_25"},{"name":"Intersection_26"},{"name":"Intersection_27"},{"name":"Intersection_28"},{"name":"Intersection_29"},{"name":"Intersection_30"},{"name":"Intersection_31"},{"name":"Intersection_32"},{"name":"Intersection_33"},{"name":"Intersection_34"},{"name":"Intersection_35"},{"name":"Intersection_36"},{"name":"Intersection_37"},{"name":"Intersection_38"},{"name":"Intersection_39"},{"name":"Intersection_40"},{"name":"Intersection_41"},{"name":"Intersection_42"},{"name":"Intersection_43"},{"name":"Intersection_44"},{"name":"Intersection_45"},{"name":"Intersection_46"},{"name":"Intersection_47"},{"name":"Intersection_48"},{"name":"Intersection_49"},{"name":"Intersection_50"},{"name":"Intersection_51"},{"name":"Intersection_52"},{"name":"Intersection_53"},{"name":"Intersection_54"},{"name":"Intersection_55"},{"name":"Intersection_56"},{"name":"Intersection_57"},{"name":"Intersection_58"},{"name":"Intersection_59"},{"name":"Intersection_60"},{"name":"Intersection_61"},{"name":"Intersection_62"},{"name":"Intersection_63"},{"name":"Intersection_64"},{"name":"Intersection_65"},{"name":"Intersection_66"}]
\ No newline at end of file
diff --git a/test/unit/data-structures/graph/undirected-graph.test.ts b/test/unit/data-structures/graph/undirected-graph.test.ts
index b4f827f..fce010f 100644
--- a/test/unit/data-structures/graph/undirected-graph.test.ts
+++ b/test/unit/data-structures/graph/undirected-graph.test.ts
@@ -1,6 +1,6 @@
import {UndirectedEdge, UndirectedGraph, UndirectedVertex} from '../../../../src';
-import saltyVertexes from './salty-vertexes.json';
-import saltyEdges from './salty-edges.json';
+import saltyVertexes from './salty-vertexes.json';
+import saltyEdges from './salty-edges.json';
describe('UndirectedGraph Operation Test', () => {
let graph: UndirectedGraph;
@@ -151,18 +151,17 @@ describe('UndirectedGraph', () => {
it('xxx', () => {
// const start = performance.now();
- const graph = new UndirectedGraph<{ name: string }, number >()
+ const graph = new UndirectedGraph<{name: string}, number>();
for (const v of saltyVertexes) {
graph.addVertex(v.name, v);
}
for (const e of saltyEdges) {
- const [s,d] = e;
- graph.addEdge( s.name, d.name, d.weight );
+ const [s, d] = e;
+ graph.addEdge(s.name, d.name, d.weight);
}
// const result = graph.getAllPathsBetween('Intersection_1','Intersection_5');
// console.log('---xxx', performance.now() - start, result)
// const result = graph.dijkstra('Intersection_1','Intersection_5', true, true);
// console.log('---xxx', performance.now() - start, result)
-
- })
+ });
});