From c3b79b70f65d8ef2323b2db02339c9d6e94976f3 Mon Sep 17 00:00:00 2001 From: Revone Date: Fri, 8 Dec 2023 10:07:51 +0800 Subject: [PATCH] docs: Add a GITHUB stars badge. Adjust the order of the table. Test: Specify the type of binary tree constructor. --- CHANGELOG.md | 2 +- README.md | 113 ++++++++--------- README_zh-CN.md | 114 +++++++++--------- .../binary-tree/binary-tree.test.ts | 4 +- .../data-structures/binary-tree/bst.test.ts | 2 +- .../binary-tree/rb-tree.test.ts | 10 +- 6 files changed, 125 insertions(+), 120 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b9bddf1..4882235 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,7 +8,7 @@ All notable changes to this project will be documented in this file. - [Semantic Versioning](https://semver.org/spec/v2.0.0.html) - [`auto-changelog`](https://github.com/CookPete/auto-changelog) -## [v1.48.7](https://github.com/zrwusa/data-structure-typed/compare/v1.35.0...main) (upcoming) +## [v1.48.8](https://github.com/zrwusa/data-structure-typed/compare/v1.35.0...main) (upcoming) ### Changes diff --git a/README.md b/README.md index e7eb12c..db8ef67 100644 --- a/README.md +++ b/README.md @@ -4,6 +4,7 @@ ![npm](https://img.shields.io/npm/dm/data-structure-typed) ![npm package minimized gzipped size (select exports)](https://img.shields.io/bundlejs/size/data-structure-typed) ![GitHub top language](https://img.shields.io/github/languages/top/zrwusa/data-structure-typed) +![GITHUB Star](https://img.shields.io/github/stars/zrwusa/data-structure-typed) ![eslint](https://aleen42.github.io/badges/src/eslint.svg) ![NPM](https://img.shields.io/npm/l/data-structure-typed) @@ -824,61 +825,6 @@ avl2.print(); -## Benchmark - -[//]: # (No deletion!!! Start of Replace Section) -
-
avl-tree
-
test nametime taken (ms)executions per secsample deviation
10,000 add randomly51.2219.520.00
10,000 add & delete randomly110.409.060.00
10,000 addMany58.3917.136.35e-4
10,000 get50.5919.773.87e-4
-
-
binary-tree
-
test nametime taken (ms)executions per secsample deviation
1,000 add randomly13.8372.291.19e-4
1,000 add & delete randomly21.4946.542.34e-4
1,000 addMany15.9362.781.27e-4
1,000 get18.1954.981.79e-4
1,000 has18.2054.931.71e-4
1,000 dfs161.796.187.45e-4
1,000 bfs56.6817.644.77e-4
1,000 morris262.643.810.00
-
-
bst
-
test nametime taken (ms)executions per secsample deviation
10,000 add randomly51.5119.418.70e-4
10,000 add & delete randomly114.098.769.66e-4
10,000 addMany47.8620.902.77e-4
10,000 get51.9319.266.56e-4
-
-
rb-tree
-
test nametime taken (ms)executions per secsample deviation
100,000 add86.6311.540.00
100,000 add & delete randomly218.884.570.01
100,000 getNode261.163.830.00
100,000 add & iterator117.648.500.00
-
-
comparison
-
test nametime taken (ms)executions per secsample deviation
SRC PQ 10,000 add0.146949.201.53e-6
CJS PQ 10,000 add0.146943.681.74e-6
MJS PQ 10,000 add0.571758.406.26e-6
SRC PQ 10,000 add & pop3.40293.943.50e-5
CJS PQ 10,000 add & pop3.42292.695.34e-5
MJS PQ 10,000 add & pop3.30303.013.97e-5
-
-
directed-graph
-
test nametime taken (ms)executions per secsample deviation
1,000 addVertex0.109930.741.11e-6
1,000 addEdge6.13163.191.84e-4
1,000 getVertex0.052.15e+45.00e-7
1,000 getEdge23.5742.430.00
tarjan252.053.970.03
tarjan all221.154.520.00
topologicalSort181.075.520.00
-
-
hash-map
-
test nametime taken (ms)executions per secsample deviation
1,000,000 set122.908.140.04
Native Map 1,000,000 set215.974.630.02
Native Set 1,000,000 add179.115.580.02
1,000,000 set & get123.108.120.04
Native Map 1,000,000 set & get271.803.680.02
Native Set 1,000,000 add & has176.655.660.02
1,000,000 ObjKey set & get341.972.920.07
Native Map 1,000,000 ObjKey set & get316.863.160.04
Native Set 1,000,000 ObjKey add & has285.143.510.06
-
-
heap
-
test nametime taken (ms)executions per secsample deviation
100,000 add & pop80.3712.440.00
100,000 add & dfs36.2027.630.00
10,000 fib add & pop362.242.760.00
-
-
doubly-linked-list
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push216.094.630.06
1,000,000 unshift220.684.530.02
1,000,000 unshift & shift172.935.780.04
1,000,000 insertBefore332.253.010.08
-
-
singly-linked-list
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push & shift222.994.480.10
10,000 push & pop214.824.660.01
10,000 insertBefore251.243.980.01
-
-
max-priority-queue
-
test nametime taken (ms)executions per secsample deviation
10,000 refill & poll8.91112.191.57e-4
-
-
priority-queue
-
test nametime taken (ms)executions per secsample deviation
100,000 add & pop101.709.830.00
-
-
deque
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push13.8072.471.56e-4
1,000,000 push & pop22.7244.022.02e-4
100,000 push & shift2.35425.675.80e-5
Native Array 100,000 push & shift2511.140.400.36
100,000 unshift & shift2.23447.893.30e-4
Native Array 100,000 unshift & shift4140.230.240.33
-
-
queue
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push43.6522.910.01
100,000 push & shift4.99200.289.54e-5
Native Array 100,000 push & shift2335.630.430.33
Native Array 100,000 push & pop4.39227.810.00
-
-
stack
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push45.3822.040.01
1,000,000 push & pop49.5220.190.01
-
-
trie
-
test nametime taken (ms)executions per secsample deviation
100,000 push42.9923.260.00
100,000 getWords89.7811.140.00
-
- -[//]: # (No deletion!!! End of Replace Section) - ## Built-in classic algorithms @@ -1029,3 +975,60 @@ avl2.print();
+ +## Benchmark + +[//]: # (No deletion!!! Start of Replace Section) +
+
avl-tree
+
test nametime taken (ms)executions per secsample deviation
10,000 add randomly51.2219.520.00
10,000 add & delete randomly110.409.060.00
10,000 addMany58.3917.136.35e-4
10,000 get50.5919.773.87e-4
+
+
binary-tree
+
test nametime taken (ms)executions per secsample deviation
1,000 add randomly13.8372.291.19e-4
1,000 add & delete randomly21.4946.542.34e-4
1,000 addMany15.9362.781.27e-4
1,000 get18.1954.981.79e-4
1,000 has18.2054.931.71e-4
1,000 dfs161.796.187.45e-4
1,000 bfs56.6817.644.77e-4
1,000 morris262.643.810.00
+
+
bst
+
test nametime taken (ms)executions per secsample deviation
10,000 add randomly51.5119.418.70e-4
10,000 add & delete randomly114.098.769.66e-4
10,000 addMany47.8620.902.77e-4
10,000 get51.9319.266.56e-4
+
+
rb-tree
+
test nametime taken (ms)executions per secsample deviation
100,000 add86.6311.540.00
100,000 add & delete randomly218.884.570.01
100,000 getNode261.163.830.00
100,000 add & iterator117.648.500.00
+
+
comparison
+
test nametime taken (ms)executions per secsample deviation
SRC PQ 10,000 add0.146949.201.53e-6
CJS PQ 10,000 add0.146943.681.74e-6
MJS PQ 10,000 add0.571758.406.26e-6
SRC PQ 10,000 add & pop3.40293.943.50e-5
CJS PQ 10,000 add & pop3.42292.695.34e-5
MJS PQ 10,000 add & pop3.30303.013.97e-5
+
+
directed-graph
+
test nametime taken (ms)executions per secsample deviation
1,000 addVertex0.109930.741.11e-6
1,000 addEdge6.13163.191.84e-4
1,000 getVertex0.052.15e+45.00e-7
1,000 getEdge23.5742.430.00
tarjan252.053.970.03
tarjan all221.154.520.00
topologicalSort181.075.520.00
+
+
hash-map
+
test nametime taken (ms)executions per secsample deviation
1,000,000 set122.908.140.04
Native Map 1,000,000 set215.974.630.02
Native Set 1,000,000 add179.115.580.02
1,000,000 set & get123.108.120.04
Native Map 1,000,000 set & get271.803.680.02
Native Set 1,000,000 add & has176.655.660.02
1,000,000 ObjKey set & get341.972.920.07
Native Map 1,000,000 ObjKey set & get316.863.160.04
Native Set 1,000,000 ObjKey add & has285.143.510.06
+
+
heap
+
test nametime taken (ms)executions per secsample deviation
100,000 add & pop80.3712.440.00
100,000 add & dfs36.2027.630.00
10,000 fib add & pop362.242.760.00
+
+
doubly-linked-list
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push216.094.630.06
1,000,000 unshift220.684.530.02
1,000,000 unshift & shift172.935.780.04
1,000,000 insertBefore332.253.010.08
+
+
singly-linked-list
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push & shift222.994.480.10
10,000 push & pop214.824.660.01
10,000 insertBefore251.243.980.01
+
+
max-priority-queue
+
test nametime taken (ms)executions per secsample deviation
10,000 refill & poll8.91112.191.57e-4
+
+
priority-queue
+
test nametime taken (ms)executions per secsample deviation
100,000 add & pop101.709.830.00
+
+
deque
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push13.8072.471.56e-4
1,000,000 push & pop22.7244.022.02e-4
100,000 push & shift2.35425.675.80e-5
Native Array 100,000 push & shift2511.140.400.36
100,000 unshift & shift2.23447.893.30e-4
Native Array 100,000 unshift & shift4140.230.240.33
+
+
queue
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push43.6522.910.01
100,000 push & shift4.99200.289.54e-5
Native Array 100,000 push & shift2335.630.430.33
Native Array 100,000 push & pop4.39227.810.00
+
+
stack
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push45.3822.040.01
1,000,000 push & pop49.5220.190.01
+
+
trie
+
test nametime taken (ms)executions per secsample deviation
100,000 push42.9923.260.00
100,000 getWords89.7811.140.00
+
+ +[//]: # (No deletion!!! End of Replace Section) + + diff --git a/README_zh-CN.md b/README_zh-CN.md index 582cbe3..131d899 100644 --- a/README_zh-CN.md +++ b/README_zh-CN.md @@ -4,6 +4,7 @@ ![npm](https://img.shields.io/npm/dm/data-structure-typed) ![npm package minimized gzipped size (select exports)](https://img.shields.io/bundlejs/size/data-structure-typed) ![GitHub top language](https://img.shields.io/github/languages/top/zrwusa/data-structure-typed) +![GITHUB Star](https://img.shields.io/github/stars/zrwusa/data-structure-typed) ![eslint](https://aleen42.github.io/badges/src/eslint.svg) ![NPM](https://img.shields.io/npm/l/data-structure-typed) @@ -827,61 +828,6 @@ avl2.print(); -## 基准测试 - -[//]: # (No deletion!!! Start of Replace Section) -
-
avl-tree
-
test nametime taken (ms)executions per secsample deviation
10,000 add randomly72.4813.800.03
10,000 add & delete randomly144.146.940.03
10,000 addMany69.7114.350.02
10,000 get54.2118.450.01
-
-
binary-tree
-
test nametime taken (ms)executions per secsample deviation
1,000 add randomly15.8463.140.00
1,000 add & delete randomly24.6240.620.00
1,000 addMany17.8556.010.00
1,000 get20.8348.000.00
1,000 has20.7848.130.00
1,000 dfs186.065.370.02
1,000 bfs66.5815.020.02
1,000 morris298.233.350.02
-
-
bst
-
test nametime taken (ms)executions per secsample deviation
10,000 add randomly55.0418.170.01
10,000 add & delete randomly129.857.700.01
10,000 addMany50.4019.840.01
10,000 get63.3915.780.01
-
-
rb-tree
-
test nametime taken (ms)executions per secsample deviation
100,000 add113.258.830.02
100,000 add & delete randomly305.283.280.03
100,000 getNode73.2013.660.03
100,000 add & iterator159.806.260.06
-
-
comparison
-
test nametime taken (ms)executions per secsample deviation
SRC PQ 10,000 add0.175872.024.08e-5
CJS PQ 10,000 add0.204961.221.14e-4
MJS PQ 10,000 add0.741351.472.98e-4
SRC PQ 10,000 add & pop4.62216.490.00
CJS PQ 10,000 add & pop4.36229.400.00
MJS PQ 10,000 add & pop3.92255.230.00
-
-
directed-graph
-
test nametime taken (ms)executions per secsample deviation
1,000 addVertex0.128557.702.46e-5
1,000 addEdge7.37135.700.00
1,000 getVertex0.051.91e+41.12e-5
1,000 getEdge22.7543.960.00
tarjan196.985.080.01
tarjan all217.254.600.03
topologicalSort177.305.640.02
-
-
hash-map
-
test nametime taken (ms)executions per secsample deviation
1,000,000 set153.746.500.07
1,000,000 Map set330.023.030.16
1,000,000 Set add258.643.870.06
1,000,000 set & get138.807.200.06
1,000,000 Map set & get352.632.840.05
1,000,000 Set add & has217.974.590.02
1,000,000 ObjKey set & get414.872.410.06
1,000,000 Map ObjKey set & get389.172.570.07
1,000,000 Set ObjKey add & has352.672.840.03
-
-
heap
-
test nametime taken (ms)executions per secsample deviation
100,000 add & pop90.6711.030.02
100,000 add & dfs40.3024.810.01
10,000 fib add & pop414.942.410.02
-
-
doubly-linked-list
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push290.623.440.10
1,000,000 unshift253.883.940.10
1,000,000 unshift & shift259.653.850.14
1,000,000 insertBefore463.162.160.10
-
-
singly-linked-list
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push & shift250.274.000.08
10,000 push & pop261.133.830.03
10,000 insertBefore282.463.540.02
-
-
max-priority-queue
-
test nametime taken (ms)executions per secsample deviation
10,000 refill & poll10.4995.290.00
-
-
priority-queue
-
test nametime taken (ms)executions per secsample deviation
100,000 add & pop110.639.040.01
-
-
deque
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push15.8962.920.00
1,000,000 push & pop26.4537.810.01
1,000,000 push & shift27.5236.340.00
1,000,000 unshift & shift28.8234.700.01
-
-
queue
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push51.2119.530.02
1,000,000 push & shift105.569.470.05
-
-
stack
-
test nametime taken (ms)executions per secsample deviation
1,000,000 push43.5722.950.01
1,000,000 push & pop55.1818.120.01
-
-
trie
-
test nametime taken (ms)executions per secsample deviation
100,000 push54.0818.490.01
100,000 getWords77.7712.860.02
-
- -[//]: # (No deletion!!! End of Replace Section) - ## 内建的经典算法 @@ -966,7 +912,6 @@ avl2.print();
- ## 软件工程标准 @@ -1016,4 +961,61 @@ avl2.print();
+## 基准测试 + +[//]: # (No deletion!!! Start of Replace Section) +
+
avl-tree
+
test nametime taken (ms)executions per secsample deviation
10,000 add randomly72.4813.800.03
10,000 add & delete randomly144.146.940.03
10,000 addMany69.7114.350.02
10,000 get54.2118.450.01
+
+
binary-tree
+
test nametime taken (ms)executions per secsample deviation
1,000 add randomly15.8463.140.00
1,000 add & delete randomly24.6240.620.00
1,000 addMany17.8556.010.00
1,000 get20.8348.000.00
1,000 has20.7848.130.00
1,000 dfs186.065.370.02
1,000 bfs66.5815.020.02
1,000 morris298.233.350.02
+
+
bst
+
test nametime taken (ms)executions per secsample deviation
10,000 add randomly55.0418.170.01
10,000 add & delete randomly129.857.700.01
10,000 addMany50.4019.840.01
10,000 get63.3915.780.01
+
+
rb-tree
+
test nametime taken (ms)executions per secsample deviation
100,000 add113.258.830.02
100,000 add & delete randomly305.283.280.03
100,000 getNode73.2013.660.03
100,000 add & iterator159.806.260.06
+
+
comparison
+
test nametime taken (ms)executions per secsample deviation
SRC PQ 10,000 add0.175872.024.08e-5
CJS PQ 10,000 add0.204961.221.14e-4
MJS PQ 10,000 add0.741351.472.98e-4
SRC PQ 10,000 add & pop4.62216.490.00
CJS PQ 10,000 add & pop4.36229.400.00
MJS PQ 10,000 add & pop3.92255.230.00
+
+
directed-graph
+
test nametime taken (ms)executions per secsample deviation
1,000 addVertex0.128557.702.46e-5
1,000 addEdge7.37135.700.00
1,000 getVertex0.051.91e+41.12e-5
1,000 getEdge22.7543.960.00
tarjan196.985.080.01
tarjan all217.254.600.03
topologicalSort177.305.640.02
+
+
hash-map
+
test nametime taken (ms)executions per secsample deviation
1,000,000 set153.746.500.07
1,000,000 Map set330.023.030.16
1,000,000 Set add258.643.870.06
1,000,000 set & get138.807.200.06
1,000,000 Map set & get352.632.840.05
1,000,000 Set add & has217.974.590.02
1,000,000 ObjKey set & get414.872.410.06
1,000,000 Map ObjKey set & get389.172.570.07
1,000,000 Set ObjKey add & has352.672.840.03
+
+
heap
+
test nametime taken (ms)executions per secsample deviation
100,000 add & pop90.6711.030.02
100,000 add & dfs40.3024.810.01
10,000 fib add & pop414.942.410.02
+
+
doubly-linked-list
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push290.623.440.10
1,000,000 unshift253.883.940.10
1,000,000 unshift & shift259.653.850.14
1,000,000 insertBefore463.162.160.10
+
+
singly-linked-list
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push & shift250.274.000.08
10,000 push & pop261.133.830.03
10,000 insertBefore282.463.540.02
+
+
max-priority-queue
+
test nametime taken (ms)executions per secsample deviation
10,000 refill & poll10.4995.290.00
+
+
priority-queue
+
test nametime taken (ms)executions per secsample deviation
100,000 add & pop110.639.040.01
+
+
deque
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push15.8962.920.00
1,000,000 push & pop26.4537.810.01
1,000,000 push & shift27.5236.340.00
1,000,000 unshift & shift28.8234.700.01
+
+
queue
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push51.2119.530.02
1,000,000 push & shift105.569.470.05
+
+
stack
+
test nametime taken (ms)executions per secsample deviation
1,000,000 push43.5722.950.01
1,000,000 push & pop55.1818.120.01
+
+
trie
+
test nametime taken (ms)executions per secsample deviation
100,000 push54.0818.490.01
100,000 getWords77.7712.860.02
+
+ +[//]: # (No deletion!!! End of Replace Section) + + + diff --git a/test/unit/data-structures/binary-tree/binary-tree.test.ts b/test/unit/data-structures/binary-tree/binary-tree.test.ts index a2bcc6f..c5e7225 100644 --- a/test/unit/data-structures/binary-tree/binary-tree.test.ts +++ b/test/unit/data-structures/binary-tree/binary-tree.test.ts @@ -264,7 +264,7 @@ describe('BinaryTree', () => { describe('BinaryTree Morris Traversal', () => { // Create a binary tree - const tree = new BinaryTree>(); + const tree = new BinaryTree(); tree.add(1); tree.add(2); tree.add(3); @@ -448,7 +448,7 @@ describe('BinaryTree', () => { it('should get the height of the tree', () => { tree.add([5, 'A']); - tree.add([3, 'B']); + tree.add(3, 'B'); tree.add([7, 'C']); expect(tree.getHeight()).toBe(1); diff --git a/test/unit/data-structures/binary-tree/bst.test.ts b/test/unit/data-structures/binary-tree/bst.test.ts index e684791..6f9717c 100644 --- a/test/unit/data-structures/binary-tree/bst.test.ts +++ b/test/unit/data-structures/binary-tree/bst.test.ts @@ -5,7 +5,7 @@ const isDebug = isDebugTest; describe('BST operations test', () => { it('should perform various operations on a Binary Search Tree with numeric values', () => { - const bst = new BST(); + const bst = new BST(); expect(bst).toBeInstanceOf(BST); bst.add([11, 11]); bst.add([3, 3]); 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 125b8f4..a402de4 100644 --- a/test/unit/data-structures/binary-tree/rb-tree.test.ts +++ b/test/unit/data-structures/binary-tree/rb-tree.test.ts @@ -6,10 +6,10 @@ import { OrderedMap } from 'js-sdsl'; const isDebug = isDebugTest; describe('RedBlackTree', () => { - let tree: RedBlackTree; + let tree: RedBlackTree; beforeEach(() => { - tree = new RedBlackTree(); + tree = new RedBlackTree(); }); describe('add and getNode', () => { @@ -141,10 +141,10 @@ describe('RedBlackTree', () => { }); describe('RedBlackTree', () => { - let tree: RedBlackTree; + let tree: RedBlackTree; beforeEach(() => { - tree = new RedBlackTree(); + tree = new RedBlackTree(); }); it('should add nodes into the tree', () => { @@ -511,7 +511,7 @@ describe('RedBlackTree iterative methods test', () => { beforeEach(() => { rbTree = new RedBlackTree(); rbTree.add([1, 'a']); - rbTree.add([2, 'b']); + rbTree.add(2, 'b'); rbTree.add([3, 'c']); });