undirected-graph-typed 1.47.3 → 1.47.4
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.
- package/README.md +410 -353
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -48,13 +48,14 @@ yarn add undirected-graph-typed
|
|
|
48
48
|
|
|
49
49
|
```
|
|
50
50
|
|
|
51
|
+
|
|
51
52
|
## API docs & Examples
|
|
52
53
|
|
|
53
54
|
[API Docs](https://data-structure-typed-docs.vercel.app)
|
|
54
55
|
|
|
55
|
-
[Live Examples](https://
|
|
56
|
+
[Live Examples](https://vivid-algorithm.vercel.app)
|
|
56
57
|
|
|
57
|
-
<a href="https://github.com/zrwusa/
|
|
58
|
+
<a href="https://github.com/zrwusa/vivid-algorithm" target="_blank">Examples Repository</a>
|
|
58
59
|
|
|
59
60
|
## Data Structures
|
|
60
61
|
|
|
@@ -64,464 +65,520 @@ yarn add undirected-graph-typed
|
|
|
64
65
|
<th>Data Structure</th>
|
|
65
66
|
<th>Unit Test</th>
|
|
66
67
|
<th>Performance Test</th>
|
|
67
|
-
<th>API
|
|
68
|
-
<th>Implemented</th>
|
|
68
|
+
<th>API Docs</th>
|
|
69
69
|
</tr>
|
|
70
70
|
</thead>
|
|
71
71
|
<tbody>
|
|
72
72
|
<tr>
|
|
73
73
|
<td>Binary Tree</td>
|
|
74
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
|
|
75
|
-
</td>
|
|
76
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""/>
|
|
77
|
-
</td>
|
|
78
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
|
|
79
74
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
75
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
76
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryTree.html"><span>Binary Tree</span></a></td>
|
|
80
77
|
</tr>
|
|
81
78
|
<tr>
|
|
82
79
|
<td>Binary Search Tree (BST)</td>
|
|
83
80
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
84
81
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
85
82
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BST.html"><span>BST</span></a></td>
|
|
86
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
87
83
|
</tr>
|
|
88
84
|
<tr>
|
|
89
85
|
<td>AVL Tree</td>
|
|
90
86
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
91
87
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
92
88
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AVLTree.html"><span>AVLTree</span></a></td>
|
|
89
|
+
</tr>
|
|
90
|
+
<tr>
|
|
91
|
+
<td>Red Black Tree</td>
|
|
93
92
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
93
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
94
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/RedBlackTree.html"><span>RedBlackTree</span></a></td>
|
|
94
95
|
</tr>
|
|
95
96
|
<tr>
|
|
96
97
|
<td>Tree Multiset</td>
|
|
97
98
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
98
99
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
99
100
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/TreeMultimap.html"><span>TreeMultimap</span></a></td>
|
|
100
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
101
101
|
</tr>
|
|
102
102
|
<tr>
|
|
103
103
|
<td>Segment Tree</td>
|
|
104
|
-
<td></td>
|
|
104
|
+
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
105
105
|
<td></td>
|
|
106
106
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SegmentTree.html"><span>SegmentTree</span></a></td>
|
|
107
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
108
107
|
</tr>
|
|
109
108
|
<tr>
|
|
110
109
|
<td>Binary Indexed Tree</td>
|
|
111
110
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
112
111
|
<td></td>
|
|
113
112
|
<td><a href="https://data-structure-typed-docs.vercel.app/classes/BinaryIndexedTree.html"><span>BinaryIndexedTree</span></a></td>
|
|
114
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
115
113
|
</tr>
|
|
116
114
|
<tr>
|
|
117
|
-
<td>
|
|
118
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
119
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
120
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AbstractGraph.html"><span>AbstractGraph</span></a></td>
|
|
121
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
122
|
-
</tr>
|
|
123
|
-
<tr>
|
|
124
|
-
<td>Directed Graph</td>
|
|
125
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
126
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
127
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DirectedGraph.html"><span>DirectedGraph</span></a></td>
|
|
128
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
129
|
-
</tr>
|
|
130
|
-
<tr>
|
|
131
|
-
<td>Undirected Graph</td>
|
|
132
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
115
|
+
<td>Heap</td>
|
|
133
116
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
134
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
|
|
135
117
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
118
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Heap.html"><span>Heap</span></a></td>
|
|
136
119
|
</tr>
|
|
137
120
|
<tr>
|
|
138
|
-
<td>
|
|
139
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
121
|
+
<td>Priority Queue</td>
|
|
140
122
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
141
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
142
123
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
124
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
|
|
143
125
|
</tr>
|
|
144
126
|
<tr>
|
|
145
|
-
<td>
|
|
146
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
127
|
+
<td>Max Priority Queue</td>
|
|
147
128
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
148
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
149
129
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
130
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
|
|
150
131
|
</tr>
|
|
151
132
|
<tr>
|
|
152
|
-
<td>
|
|
153
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
133
|
+
<td>Min Priority Queue</td>
|
|
154
134
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
155
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
|
|
156
135
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
136
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
|
|
157
137
|
</tr>
|
|
158
138
|
<tr>
|
|
159
|
-
<td>
|
|
160
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
139
|
+
<td>Trie</td>
|
|
161
140
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
162
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
|
|
163
141
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
142
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
|
|
164
143
|
</tr>
|
|
165
144
|
<tr>
|
|
166
|
-
<td>
|
|
167
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
145
|
+
<td>Graph</td>
|
|
168
146
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
169
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/ObjectDeque.html"><span>ObjectDeque</span></a></td>
|
|
170
147
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
148
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/AbstractGraph.html"><span>AbstractGraph</span></a></td>
|
|
171
149
|
</tr>
|
|
172
150
|
<tr>
|
|
173
|
-
<td>
|
|
174
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
151
|
+
<td>Directed Graph</td>
|
|
175
152
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
176
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/ArrayDeque.html"><span>ArrayDeque</span></a></td>
|
|
177
153
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
154
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DirectedGraph.html"><span>DirectedGraph</span></a></td>
|
|
178
155
|
</tr>
|
|
179
156
|
<tr>
|
|
180
|
-
<td>
|
|
157
|
+
<td>Undirected Graph</td>
|
|
181
158
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
182
|
-
<td></td>
|
|
183
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
|
|
184
159
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
160
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/UndirectedGraph.html"><span>UndirectedGraph</span></a></td>
|
|
185
161
|
</tr>
|
|
186
|
-
|
|
187
|
-
[//]: # (<tr>)
|
|
188
|
-
|
|
189
|
-
[//]: # (<td>Hash</td>)
|
|
190
|
-
|
|
191
|
-
[//]: # (<td></td>)
|
|
192
|
-
|
|
193
|
-
[//]: # (<td></td>)
|
|
194
|
-
|
|
195
|
-
[//]: # (<td><a href="https://data-structure-typed-docs.vercel.app/classes/HashTable.html"><span>HashTable</span></a></td>)
|
|
196
|
-
|
|
197
|
-
[//]: # (<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>)
|
|
198
|
-
|
|
199
|
-
[//]: # (</tr>)
|
|
200
162
|
<tr>
|
|
201
|
-
<td>
|
|
202
|
-
<td></td>
|
|
203
|
-
<td></td>
|
|
204
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateSet.html"><span>CoordinateSet</span></a></td>
|
|
163
|
+
<td>Queue</td>
|
|
205
164
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
206
|
-
</tr>
|
|
207
|
-
<tr>
|
|
208
|
-
<td>Coordinate Map</td>
|
|
209
|
-
<td></td>
|
|
210
|
-
<td></td>
|
|
211
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/CoordinateMap.html"><span>CoordinateMap</span></a></td>
|
|
212
165
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
166
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Queue.html"><span>Queue</span></a></td>
|
|
213
167
|
</tr>
|
|
214
168
|
<tr>
|
|
215
|
-
<td>
|
|
169
|
+
<td>Deque</td>
|
|
216
170
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
217
171
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
218
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/
|
|
219
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
172
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Deque.html"><span>Deque</span></a></td>
|
|
220
173
|
</tr>
|
|
221
174
|
<tr>
|
|
222
|
-
<td>
|
|
223
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
175
|
+
<td>Linked List</td>
|
|
224
176
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
225
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/PriorityQueue.html"><span>PriorityQueue</span></a></td>
|
|
226
177
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
178
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
227
179
|
</tr>
|
|
228
180
|
<tr>
|
|
229
|
-
<td>
|
|
230
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
181
|
+
<td>Singly Linked List</td>
|
|
231
182
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
232
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MaxPriorityQueue.html"><span>MaxPriorityQueue</span></a></td>
|
|
233
183
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
184
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/SinglyLinkedList.html"><span>SinglyLinkedList</span></a></td>
|
|
234
185
|
</tr>
|
|
235
186
|
<tr>
|
|
236
|
-
<td>
|
|
237
|
-
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
187
|
+
<td>Doubly Linked List</td>
|
|
238
188
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
239
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/MinPriorityQueue.html"><span>MinPriorityQueue</span></a></td>
|
|
240
189
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
190
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/DoublyLinkedList.html"><span>DoublyLinkedList</span></a></td>
|
|
241
191
|
</tr>
|
|
242
192
|
<tr>
|
|
243
|
-
<td>
|
|
193
|
+
<td>Stack</td>
|
|
244
194
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
245
|
-
<td></td>
|
|
246
|
-
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Trie.html"><span>Trie</span></a></td>
|
|
247
195
|
<td><img src="https://raw.githubusercontent.com/zrwusa/assets/master/images/data-structure-typed/assets/tick.svg" alt=""></td>
|
|
196
|
+
<td><a href="https://data-structure-typed-docs.vercel.app/classes/Stack.html"><span>Stack</span></a></td>
|
|
248
197
|
</tr>
|
|
249
198
|
</tbody>
|
|
250
199
|
</table>
|
|
251
200
|
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
## Complexities
|
|
255
|
-
|
|
256
|
-
### performance of Big O
|
|
201
|
+
## Standard library data structure comparison
|
|
257
202
|
|
|
258
203
|
<table>
|
|
259
|
-
<thead>
|
|
260
|
-
<tr>
|
|
261
|
-
<th>
|
|
262
|
-
<th>
|
|
263
|
-
<th>
|
|
264
|
-
<th>
|
|
265
|
-
|
|
266
|
-
</
|
|
267
|
-
|
|
268
|
-
<
|
|
269
|
-
<
|
|
270
|
-
<td
|
|
271
|
-
<td>
|
|
272
|
-
<td>
|
|
273
|
-
|
|
274
|
-
<
|
|
275
|
-
|
|
276
|
-
<
|
|
277
|
-
<td
|
|
278
|
-
<td>
|
|
279
|
-
|
|
280
|
-
<
|
|
281
|
-
<td>
|
|
282
|
-
|
|
283
|
-
<
|
|
284
|
-
<td
|
|
285
|
-
|
|
286
|
-
<
|
|
287
|
-
<td>
|
|
288
|
-
<td>
|
|
289
|
-
|
|
290
|
-
<
|
|
291
|
-
|
|
292
|
-
<
|
|
293
|
-
<td>
|
|
294
|
-
<td>
|
|
295
|
-
<td>
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
<
|
|
299
|
-
<td>
|
|
300
|
-
<td
|
|
301
|
-
<td
|
|
302
|
-
<td
|
|
303
|
-
</tr>
|
|
304
|
-
<tr>
|
|
305
|
-
<td
|
|
306
|
-
<td
|
|
307
|
-
<td
|
|
308
|
-
<td
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
<
|
|
312
|
-
<td
|
|
313
|
-
<td
|
|
314
|
-
<td
|
|
315
|
-
|
|
316
|
-
<
|
|
317
|
-
|
|
318
|
-
|
|
204
|
+
<thead>
|
|
205
|
+
<tr>
|
|
206
|
+
<th>Data Structure Typed</th>
|
|
207
|
+
<th>C++ STL</th>
|
|
208
|
+
<th>java.util</th>
|
|
209
|
+
<th>Python collections</th>
|
|
210
|
+
</tr>
|
|
211
|
+
</thead>
|
|
212
|
+
<tbody>
|
|
213
|
+
<tr>
|
|
214
|
+
<td>Heap<E></td>
|
|
215
|
+
<td>priority_queue<T></td>
|
|
216
|
+
<td>PriorityQueue<E></td>
|
|
217
|
+
<td>heapq</td>
|
|
218
|
+
</tr>
|
|
219
|
+
<tr>
|
|
220
|
+
<td>Deque<E></td>
|
|
221
|
+
<td>deque<T></td>
|
|
222
|
+
<td>ArrayDeque<E></td>
|
|
223
|
+
<td>deque</td>
|
|
224
|
+
</tr>
|
|
225
|
+
<tr>
|
|
226
|
+
<td>Queue<E></td>
|
|
227
|
+
<td>queue<T></td>
|
|
228
|
+
<td>Queue<E></td>
|
|
229
|
+
<td>-</td>
|
|
230
|
+
</tr>
|
|
231
|
+
<tr>
|
|
232
|
+
<td>HashMap<K, V></td>
|
|
233
|
+
<td>unordered_map<K, V></td>
|
|
234
|
+
<td>HashMap<K, V></td>
|
|
235
|
+
<td>defaultdict</td>
|
|
236
|
+
</tr>
|
|
237
|
+
<tr>
|
|
238
|
+
<td>DoublyLinkedList<E></td>
|
|
239
|
+
<td>list<T></td>
|
|
240
|
+
<td>LinkedList<E></td>
|
|
241
|
+
<td>-</td>
|
|
242
|
+
</tr>
|
|
243
|
+
<tr>
|
|
244
|
+
<td>SinglyLinkedList<E></td>
|
|
245
|
+
<td>-</td>
|
|
246
|
+
<td>-</td>
|
|
247
|
+
<td>-</td>
|
|
248
|
+
</tr>
|
|
249
|
+
<tr>
|
|
250
|
+
<td>BinaryTree<K, V></td>
|
|
251
|
+
<td>-</td>
|
|
252
|
+
<td>-</td>
|
|
253
|
+
<td>-</td>
|
|
254
|
+
</tr>
|
|
255
|
+
<tr>
|
|
256
|
+
<td>BST<K, V></td>
|
|
257
|
+
<td>-</td>
|
|
258
|
+
<td>-</td>
|
|
259
|
+
<td>-</td>
|
|
260
|
+
</tr>
|
|
261
|
+
<tr>
|
|
262
|
+
<td>RedBlackTree<E></td>
|
|
263
|
+
<td>set<T></td>
|
|
264
|
+
<td>TreeSet<E></td>
|
|
265
|
+
<td>-</td>
|
|
266
|
+
</tr>
|
|
267
|
+
<tr>
|
|
268
|
+
<td>RedBlackTree<K, V></td>
|
|
269
|
+
<td>map<K, V></td>
|
|
270
|
+
<td>TreeMap<K, V></td>
|
|
271
|
+
<td>-</td>
|
|
272
|
+
</tr>
|
|
273
|
+
<tr>
|
|
274
|
+
<td>TreeMultimap<K, V></td>
|
|
275
|
+
<td>multimap<K, V></td>
|
|
276
|
+
<td>-</td>
|
|
277
|
+
<td>-</td>
|
|
278
|
+
</tr>
|
|
279
|
+
<tr>
|
|
280
|
+
<td>-</td>
|
|
281
|
+
<td>multiset<T></td>
|
|
282
|
+
<td>-</td>
|
|
283
|
+
<td>-</td>
|
|
284
|
+
</tr>
|
|
285
|
+
<tr>
|
|
286
|
+
<td>Trie</td>
|
|
287
|
+
<td>-</td>
|
|
288
|
+
<td>-</td>
|
|
289
|
+
<td>-</td>
|
|
290
|
+
</tr>
|
|
291
|
+
<tr>
|
|
292
|
+
<td>DirectedGraph<V, E></td>
|
|
293
|
+
<td>-</td>
|
|
294
|
+
<td>-</td>
|
|
295
|
+
<td>-</td>
|
|
296
|
+
</tr>
|
|
297
|
+
<tr>
|
|
298
|
+
<td>UndirectedGraph<V, E></td>
|
|
299
|
+
<td>-</td>
|
|
300
|
+
<td>-</td>
|
|
301
|
+
<td>-</td>
|
|
302
|
+
</tr>
|
|
303
|
+
<tr>
|
|
304
|
+
<td>PriorityQueue<E></td>
|
|
305
|
+
<td>priority_queue<T></td>
|
|
306
|
+
<td>PriorityQueue<E></td>
|
|
307
|
+
<td>-</td>
|
|
308
|
+
</tr>
|
|
309
|
+
<tr>
|
|
310
|
+
<td>Array<E></td>
|
|
311
|
+
<td>vector<T></td>
|
|
312
|
+
<td>ArrayList<E></td>
|
|
313
|
+
<td>list</td>
|
|
314
|
+
</tr>
|
|
315
|
+
<tr>
|
|
316
|
+
<td>Stack<E></td>
|
|
317
|
+
<td>stack<T></td>
|
|
318
|
+
<td>Stack<E></td>
|
|
319
|
+
<td>-</td>
|
|
320
|
+
</tr>
|
|
321
|
+
<tr>
|
|
322
|
+
<td>Set<E></td>
|
|
323
|
+
<td>-</td>
|
|
324
|
+
<td>HashSet<E></td>
|
|
325
|
+
<td>set</td>
|
|
326
|
+
</tr>
|
|
327
|
+
<tr>
|
|
328
|
+
<td>Map<K, V></td>
|
|
329
|
+
<td>-</td>
|
|
330
|
+
<td>HashMap<K, V></td>
|
|
331
|
+
<td>dict</td>
|
|
332
|
+
</tr>
|
|
333
|
+
<tr>
|
|
334
|
+
<td>-</td>
|
|
335
|
+
<td>unordered_set<T></td>
|
|
336
|
+
<td>HashSet<E></td>
|
|
337
|
+
<td>-</td>
|
|
338
|
+
</tr>
|
|
339
|
+
<tr>
|
|
340
|
+
<td>Map<K, V></td>
|
|
341
|
+
<td>-</td>
|
|
342
|
+
<td>-</td>
|
|
343
|
+
<td>OrderedDict</td>
|
|
344
|
+
</tr>
|
|
345
|
+
<tr>
|
|
346
|
+
<td>-</td>
|
|
347
|
+
<td>unordered_multiset</td>
|
|
348
|
+
<td>-</td>
|
|
349
|
+
<td>Counter</td>
|
|
350
|
+
</tr>
|
|
351
|
+
<tr>
|
|
352
|
+
<td>-</td>
|
|
353
|
+
<td>-</td>
|
|
354
|
+
<td>LinkedHashSet<E></td>
|
|
355
|
+
<td>-</td>
|
|
356
|
+
</tr>
|
|
357
|
+
<tr>
|
|
358
|
+
<td>HashMap<K, V></td>
|
|
359
|
+
<td>-</td>
|
|
360
|
+
<td>LinkedHashMap<K, V></td>
|
|
361
|
+
<td>-</td>
|
|
362
|
+
</tr>
|
|
363
|
+
<tr>
|
|
364
|
+
<td>-</td>
|
|
365
|
+
<td>unordered_multimap<K, V></td>
|
|
366
|
+
<td>-</td>
|
|
367
|
+
<td>-</td>
|
|
368
|
+
</tr>
|
|
369
|
+
<tr>
|
|
370
|
+
<td>-</td>
|
|
371
|
+
<td>bitset<N></td>
|
|
372
|
+
<td>-</td>
|
|
373
|
+
<td>-</td>
|
|
374
|
+
</tr>
|
|
375
|
+
</tbody>
|
|
319
376
|
</table>
|
|
320
377
|
|
|
321
|
-
|
|
378
|
+
## Benchmark
|
|
379
|
+
|
|
380
|
+
[//]: # (No deletion!!! Start of Replace Section)
|
|
381
|
+
<div class="json-to-html-collapse clearfix 0">
|
|
382
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>avl-tree</span></div>
|
|
383
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.32</td><td>31.93</td><td>3.67e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>70.90</td><td>14.10</td><td>0.00</td></tr><tr><td>10,000 addMany</td><td>40.58</td><td>24.64</td><td>4.87e-4</td></tr><tr><td>10,000 get</td><td>27.31</td><td>36.62</td><td>2.00e-4</td></tr></table></div>
|
|
384
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
385
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>binary-tree</span></div>
|
|
386
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 add randomly</td><td>12.35</td><td>80.99</td><td>7.17e-5</td></tr><tr><td>1,000 add & delete randomly</td><td>15.98</td><td>62.58</td><td>7.98e-4</td></tr><tr><td>1,000 addMany</td><td>10.96</td><td>91.27</td><td>0.00</td></tr><tr><td>1,000 get</td><td>18.61</td><td>53.73</td><td>0.00</td></tr><tr><td>1,000 dfs</td><td>164.20</td><td>6.09</td><td>0.04</td></tr><tr><td>1,000 bfs</td><td>58.84</td><td>17.00</td><td>0.01</td></tr><tr><td>1,000 morris</td><td>256.66</td><td>3.90</td><td>7.70e-4</td></tr></table></div>
|
|
387
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
388
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>bst</span></div>
|
|
389
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add randomly</td><td>31.59</td><td>31.66</td><td>2.74e-4</td></tr><tr><td>10,000 add & delete randomly</td><td>74.56</td><td>13.41</td><td>8.32e-4</td></tr><tr><td>10,000 addMany</td><td>29.16</td><td>34.30</td><td>0.00</td></tr><tr><td>10,000 get</td><td>29.24</td><td>34.21</td><td>0.00</td></tr></table></div>
|
|
390
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
391
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>rb-tree</span></div>
|
|
392
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add</td><td>85.85</td><td>11.65</td><td>0.00</td></tr><tr><td>100,000 add & delete randomly</td><td>211.54</td><td>4.73</td><td>0.00</td></tr><tr><td>100,000 getNode</td><td>37.92</td><td>26.37</td><td>1.65e-4</td></tr></table></div>
|
|
393
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
394
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>comparison</span></div>
|
|
395
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>SRC PQ 10,000 add</td><td>0.57</td><td>1748.73</td><td>4.96e-6</td></tr><tr><td>CJS PQ 10,000 add</td><td>0.57</td><td>1746.69</td><td>4.91e-6</td></tr><tr><td>MJS PQ 10,000 add</td><td>0.57</td><td>1749.68</td><td>4.43e-6</td></tr><tr><td>SRC PQ 10,000 add & pop</td><td>3.47</td><td>288.14</td><td>6.38e-4</td></tr><tr><td>CJS PQ 10,000 add & pop</td><td>3.39</td><td>295.36</td><td>3.90e-5</td></tr><tr><td>MJS PQ 10,000 add & pop</td><td>3.37</td><td>297.17</td><td>3.03e-5</td></tr></table></div>
|
|
396
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
397
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>directed-graph</span></div>
|
|
398
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000 addVertex</td><td>0.10</td><td>9534.93</td><td>8.72e-7</td></tr><tr><td>1,000 addEdge</td><td>6.30</td><td>158.67</td><td>0.00</td></tr><tr><td>1,000 getVertex</td><td>0.05</td><td>2.16e+4</td><td>3.03e-7</td></tr><tr><td>1,000 getEdge</td><td>22.31</td><td>44.82</td><td>0.00</td></tr><tr><td>tarjan</td><td>210.90</td><td>4.74</td><td>0.01</td></tr><tr><td>tarjan all</td><td>214.72</td><td>4.66</td><td>0.01</td></tr><tr><td>topologicalSort</td><td>172.52</td><td>5.80</td><td>0.00</td></tr></table></div>
|
|
399
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
400
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>hash-map</span></div>
|
|
401
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 set</td><td>275.88</td><td>3.62</td><td>0.12</td></tr><tr><td>1,000,000 Map set</td><td>211.66</td><td>4.72</td><td>0.01</td></tr><tr><td>1,000,000 Set add</td><td>177.72</td><td>5.63</td><td>0.02</td></tr><tr><td>1,000,000 set & get</td><td>317.60</td><td>3.15</td><td>0.02</td></tr><tr><td>1,000,000 Map set & get</td><td>274.99</td><td>3.64</td><td>0.03</td></tr><tr><td>1,000,000 Set add & has</td><td>172.23</td><td>5.81</td><td>0.02</td></tr><tr><td>1,000,000 ObjKey set & get</td><td>929.40</td><td>1.08</td><td>0.07</td></tr><tr><td>1,000,000 Map ObjKey set & get</td><td>310.02</td><td>3.23</td><td>0.05</td></tr><tr><td>1,000,000 Set ObjKey add & has</td><td>283.28</td><td>3.53</td><td>0.04</td></tr></table></div>
|
|
402
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
403
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>heap</span></div>
|
|
404
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 add & pop</td><td>5.80</td><td>172.35</td><td>8.78e-5</td></tr><tr><td>10,000 fib add & pop</td><td>357.92</td><td>2.79</td><td>0.00</td></tr></table></div>
|
|
405
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
406
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>doubly-linked-list</span></div>
|
|
407
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>221.57</td><td>4.51</td><td>0.03</td></tr><tr><td>1,000,000 unshift</td><td>229.02</td><td>4.37</td><td>0.07</td></tr><tr><td>1,000,000 unshift & shift</td><td>169.21</td><td>5.91</td><td>0.02</td></tr><tr><td>1,000,000 insertBefore</td><td>314.48</td><td>3.18</td><td>0.07</td></tr></table></div>
|
|
408
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
409
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>singly-linked-list</span></div>
|
|
410
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 push & pop</td><td>212.98</td><td>4.70</td><td>0.01</td></tr><tr><td>10,000 insertBefore</td><td>250.68</td><td>3.99</td><td>0.01</td></tr></table></div>
|
|
411
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
412
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>max-priority-queue</span></div>
|
|
413
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>10,000 refill & poll</td><td>8.91</td><td>112.29</td><td>2.26e-4</td></tr></table></div>
|
|
414
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
415
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>priority-queue</span></div>
|
|
416
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 add & pop</td><td>103.59</td><td>9.65</td><td>0.00</td></tr></table></div>
|
|
417
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
418
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>deque</span></div>
|
|
419
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>14.55</td><td>68.72</td><td>6.91e-4</td></tr><tr><td>1,000,000 push & pop</td><td>23.40</td><td>42.73</td><td>5.94e-4</td></tr><tr><td>1,000,000 push & shift</td><td>24.41</td><td>40.97</td><td>1.45e-4</td></tr><tr><td>1,000,000 unshift & shift</td><td>22.56</td><td>44.32</td><td>1.30e-4</td></tr></table></div>
|
|
420
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
421
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>queue</span></div>
|
|
422
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>39.90</td><td>25.07</td><td>0.01</td></tr><tr><td>1,000,000 push & shift</td><td>81.79</td><td>12.23</td><td>0.00</td></tr></table></div>
|
|
423
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
424
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>stack</span></div>
|
|
425
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>1,000,000 push</td><td>37.60</td><td>26.60</td><td>0.00</td></tr><tr><td>1,000,000 push & pop</td><td>47.01</td><td>21.27</td><td>0.00</td></tr></table></div>
|
|
426
|
+
</div><div class="json-to-html-collapse clearfix 0">
|
|
427
|
+
<div class='collapsible level0' ><span class='json-to-html-label'>trie</span></div>
|
|
428
|
+
<div class="content"><table style="display: table; width:100%; table-layout: fixed;"><tr><th>test name</th><th>time taken (ms)</th><th>executions per sec</th><th>sample deviation</th></tr><tr><td>100,000 push</td><td>45.97</td><td>21.76</td><td>0.00</td></tr><tr><td>100,000 getWords</td><td>66.20</td><td>15.11</td><td>0.00</td></tr></table></div>
|
|
429
|
+
</div>
|
|
430
|
+
|
|
431
|
+
[//]: # (No deletion!!! End of Replace Section)
|
|
432
|
+
|
|
433
|
+
## Built-in classic algorithms
|
|
322
434
|
|
|
323
435
|
<table>
|
|
324
|
-
<thead>
|
|
325
|
-
<tr>
|
|
326
|
-
<th>
|
|
327
|
-
<th>
|
|
328
|
-
<th>
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
<
|
|
332
|
-
|
|
333
|
-
</
|
|
334
|
-
<
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
<td>
|
|
338
|
-
|
|
339
|
-
<
|
|
340
|
-
<td>
|
|
341
|
-
<td
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
<td
|
|
345
|
-
|
|
346
|
-
<
|
|
347
|
-
<td>
|
|
348
|
-
<td>
|
|
349
|
-
|
|
350
|
-
</
|
|
351
|
-
<
|
|
352
|
-
|
|
353
|
-
<
|
|
354
|
-
<td>
|
|
355
|
-
<td>1
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
</
|
|
359
|
-
|
|
360
|
-
<
|
|
361
|
-
<td>
|
|
362
|
-
<td>
|
|
363
|
-
|
|
364
|
-
|
|
365
|
-
<td
|
|
366
|
-
</tr>
|
|
367
|
-
<tr>
|
|
368
|
-
<td
|
|
369
|
-
<td
|
|
370
|
-
<td>
|
|
371
|
-
|
|
372
|
-
<
|
|
373
|
-
<td>
|
|
374
|
-
</
|
|
375
|
-
<
|
|
376
|
-
|
|
377
|
-
<
|
|
378
|
-
<td>
|
|
379
|
-
<td>
|
|
380
|
-
<td>
|
|
381
|
-
|
|
382
|
-
|
|
383
|
-
<
|
|
384
|
-
<td
|
|
385
|
-
<td>
|
|
386
|
-
|
|
387
|
-
<
|
|
388
|
-
<td>
|
|
389
|
-
<td
|
|
390
|
-
</
|
|
391
|
-
|
|
392
|
-
<
|
|
393
|
-
<td>
|
|
394
|
-
<td>
|
|
395
|
-
|
|
396
|
-
|
|
397
|
-
<td
|
|
398
|
-
</tr>
|
|
399
|
-
<tr>
|
|
400
|
-
<td
|
|
401
|
-
<td>
|
|
402
|
-
|
|
403
|
-
<td>
|
|
404
|
-
|
|
405
|
-
<
|
|
406
|
-
</
|
|
407
|
-
<
|
|
408
|
-
|
|
409
|
-
|
|
410
|
-
<td>
|
|
411
|
-
|
|
412
|
-
<
|
|
413
|
-
<td>
|
|
414
|
-
|
|
415
|
-
|
|
436
|
+
<thead>
|
|
437
|
+
<tr>
|
|
438
|
+
<th>Algorithm</th>
|
|
439
|
+
<th>Function Description</th>
|
|
440
|
+
<th>Iteration Type</th>
|
|
441
|
+
</tr>
|
|
442
|
+
</thead>
|
|
443
|
+
<tbody>
|
|
444
|
+
<tr>
|
|
445
|
+
<td>Binary Tree DFS</td>
|
|
446
|
+
<td>Traverse a binary tree in a depth-first manner, starting from the root node, first visiting the left subtree,
|
|
447
|
+
and then the right subtree, using recursion.
|
|
448
|
+
</td>
|
|
449
|
+
<td>Recursion + Iteration</td>
|
|
450
|
+
</tr>
|
|
451
|
+
<tr>
|
|
452
|
+
<td>Binary Tree BFS</td>
|
|
453
|
+
<td>Traverse a binary tree in a breadth-first manner, starting from the root node, visiting nodes level by level
|
|
454
|
+
from left to right.
|
|
455
|
+
</td>
|
|
456
|
+
<td>Iteration</td>
|
|
457
|
+
</tr>
|
|
458
|
+
<tr>
|
|
459
|
+
<td>Graph DFS</td>
|
|
460
|
+
<td>Traverse a graph in a depth-first manner, starting from a given node, exploring along one path as deeply as
|
|
461
|
+
possible, and backtracking to explore other paths. Used for finding connected components, paths, etc.
|
|
462
|
+
</td>
|
|
463
|
+
<td>Recursion + Iteration</td>
|
|
464
|
+
</tr>
|
|
465
|
+
<tr>
|
|
466
|
+
<td>Binary Tree Morris</td>
|
|
467
|
+
<td>Morris traversal is an in-order traversal algorithm for binary trees with O(1) space complexity. It allows tree
|
|
468
|
+
traversal without additional stack or recursion.
|
|
469
|
+
</td>
|
|
470
|
+
<td>Iteration</td>
|
|
471
|
+
</tr>
|
|
472
|
+
<tr>
|
|
473
|
+
<td>Graph BFS</td>
|
|
474
|
+
<td>Traverse a graph in a breadth-first manner, starting from a given node, first visiting nodes directly connected
|
|
475
|
+
to the starting node, and then expanding level by level. Used for finding shortest paths, etc.
|
|
476
|
+
</td>
|
|
477
|
+
<td>Recursion + Iteration</td>
|
|
478
|
+
</tr>
|
|
479
|
+
<tr>
|
|
480
|
+
<td>Graph Tarjan's Algorithm</td>
|
|
481
|
+
<td>Find strongly connected components in a graph, typically implemented using depth-first search.</td>
|
|
482
|
+
<td>Recursion</td>
|
|
483
|
+
</tr>
|
|
484
|
+
<tr>
|
|
485
|
+
<td>Graph Bellman-Ford Algorithm</td>
|
|
486
|
+
<td>Finding the shortest paths from a single source, can handle negative weight edges</td>
|
|
487
|
+
<td>Iteration</td>
|
|
488
|
+
</tr>
|
|
489
|
+
<tr>
|
|
490
|
+
<td>Graph Dijkstra's Algorithm</td>
|
|
491
|
+
<td>Finding the shortest paths from a single source, cannot handle negative weight edges</td>
|
|
492
|
+
<td>Iteration</td>
|
|
493
|
+
</tr>
|
|
494
|
+
<tr>
|
|
495
|
+
<td>Graph Floyd-Warshall Algorithm</td>
|
|
496
|
+
<td>Finding the shortest paths between all pairs of nodes</td>
|
|
497
|
+
<td>Iteration</td>
|
|
498
|
+
</tr>
|
|
499
|
+
<tr>
|
|
500
|
+
<td>Graph getCycles</td>
|
|
501
|
+
<td>Find all cycles in a graph or detect the presence of cycles.</td>
|
|
502
|
+
<td>Recursion</td>
|
|
503
|
+
</tr>
|
|
504
|
+
<tr>
|
|
505
|
+
<td>Graph getCutVertexes</td>
|
|
506
|
+
<td>Find cut vertices in a graph, which are nodes that, when removed, increase the number of connected components in
|
|
507
|
+
the graph.
|
|
508
|
+
</td>
|
|
509
|
+
<td>Recursion</td>
|
|
510
|
+
</tr>
|
|
511
|
+
<tr>
|
|
512
|
+
<td>Graph getSCCs</td>
|
|
513
|
+
<td>Find strongly connected components in a graph, which are subgraphs where any two nodes can reach each other.
|
|
514
|
+
</td>
|
|
515
|
+
<td>Recursion</td>
|
|
516
|
+
</tr>
|
|
517
|
+
<tr>
|
|
518
|
+
<td>Graph getBridges</td>
|
|
519
|
+
<td>Find bridges in a graph, which are edges that, when removed, increase the number of connected components in the
|
|
520
|
+
graph.
|
|
521
|
+
</td>
|
|
522
|
+
<td>Recursion</td>
|
|
523
|
+
</tr>
|
|
524
|
+
<tr>
|
|
525
|
+
<td>Graph topologicalSort</td>
|
|
526
|
+
<td>Perform topological sorting on a directed acyclic graph (DAG) to find a linear order of nodes such that all
|
|
527
|
+
directed edges go from earlier nodes to later nodes.
|
|
528
|
+
</td>
|
|
529
|
+
<td>Recursion</td>
|
|
530
|
+
</tr>
|
|
531
|
+
</tbody>
|
|
416
532
|
</table>
|
|
417
533
|
|
|
418
|
-
|
|
419
|
-
|
|
534
|
+
## Software Engineering Design Standards
|
|
420
535
|
<table>
|
|
421
|
-
<
|
|
422
|
-
<
|
|
423
|
-
<th>
|
|
424
|
-
|
|
425
|
-
<
|
|
426
|
-
<
|
|
427
|
-
<
|
|
428
|
-
|
|
429
|
-
<
|
|
430
|
-
</
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
<tr>
|
|
434
|
-
<td
|
|
435
|
-
<td>
|
|
436
|
-
|
|
437
|
-
<
|
|
438
|
-
<td>
|
|
439
|
-
<td>
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
<
|
|
443
|
-
<td
|
|
444
|
-
|
|
445
|
-
<
|
|
446
|
-
<td>
|
|
447
|
-
<td>
|
|
448
|
-
|
|
449
|
-
<
|
|
450
|
-
</
|
|
451
|
-
<
|
|
452
|
-
|
|
453
|
-
<
|
|
454
|
-
<td>
|
|
455
|
-
<td>
|
|
456
|
-
|
|
457
|
-
<
|
|
458
|
-
<td
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
<
|
|
462
|
-
<td>
|
|
463
|
-
<td>
|
|
464
|
-
|
|
465
|
-
<td>1</td>
|
|
466
|
-
<td>No</td>
|
|
467
|
-
<td></td>
|
|
468
|
-
</tr>
|
|
469
|
-
<tr>
|
|
470
|
-
<td><strong>Merge sort</strong></td>
|
|
471
|
-
<td>n log(n)</td>
|
|
472
|
-
<td>n log(n)</td>
|
|
473
|
-
<td>n log(n)</td>
|
|
474
|
-
<td>n</td>
|
|
475
|
-
<td>Yes</td>
|
|
476
|
-
<td></td>
|
|
477
|
-
</tr>
|
|
478
|
-
<tr>
|
|
479
|
-
<td><strong>Quick sort</strong></td>
|
|
480
|
-
<td>n log(n)</td>
|
|
481
|
-
<td>n log(n)</td>
|
|
482
|
-
<td>n<sup>2</sup></td>
|
|
483
|
-
<td>log(n)</td>
|
|
484
|
-
<td>No</td>
|
|
485
|
-
<td>Quicksort is usually done in-place with O(log(n)) stack space</td>
|
|
486
|
-
</tr>
|
|
487
|
-
<tr>
|
|
488
|
-
<td><strong>Shell sort</strong></td>
|
|
489
|
-
<td>n log(n)</td>
|
|
490
|
-
<td>depends on gap sequence</td>
|
|
491
|
-
<td>n (log(n))<sup>2</sup></td>
|
|
492
|
-
<td>1</td>
|
|
493
|
-
<td>No</td>
|
|
494
|
-
<td></td>
|
|
495
|
-
</tr>
|
|
496
|
-
<tr>
|
|
497
|
-
<td><strong>Counting sort</strong></td>
|
|
498
|
-
<td>n + r</td>
|
|
499
|
-
<td>n + r</td>
|
|
500
|
-
<td>n + r</td>
|
|
501
|
-
<td>n + r</td>
|
|
502
|
-
<td>Yes</td>
|
|
503
|
-
<td>r - biggest number in array</td>
|
|
504
|
-
</tr>
|
|
505
|
-
<tr>
|
|
506
|
-
<td><strong>Radix sort</strong></td>
|
|
507
|
-
<td>n * k</td>
|
|
508
|
-
<td>n * k</td>
|
|
509
|
-
<td>n * k</td>
|
|
510
|
-
<td>n + k</td>
|
|
511
|
-
<td>Yes</td>
|
|
512
|
-
<td>k - length of longest key</td>
|
|
513
|
-
</tr>
|
|
514
|
-
</tbody>
|
|
536
|
+
<tr>
|
|
537
|
+
<th>Principle</th>
|
|
538
|
+
<th>Description</th>
|
|
539
|
+
</tr>
|
|
540
|
+
<tr>
|
|
541
|
+
<td>Practicality</td>
|
|
542
|
+
<td>Follows ES6 and ESNext standards, offering unified and considerate optional parameters, and simplifies method names.</td>
|
|
543
|
+
</tr>
|
|
544
|
+
<tr>
|
|
545
|
+
<td>Extensibility</td>
|
|
546
|
+
<td>Adheres to OOP (Object-Oriented Programming) principles, allowing inheritance for all data structures.</td>
|
|
547
|
+
</tr>
|
|
548
|
+
<tr>
|
|
549
|
+
<td>Modularization</td>
|
|
550
|
+
<td>Includes data structure modularization and independent NPM packages.</td>
|
|
551
|
+
</tr>
|
|
552
|
+
<tr>
|
|
553
|
+
<td>Efficiency</td>
|
|
554
|
+
<td>All methods provide time and space complexity, comparable to native JS performance.</td>
|
|
555
|
+
</tr>
|
|
556
|
+
<tr>
|
|
557
|
+
<td>Maintainability</td>
|
|
558
|
+
<td>Follows open-source community development standards, complete documentation, continuous integration, and adheres to TDD (Test-Driven Development) patterns.</td>
|
|
559
|
+
</tr>
|
|
560
|
+
<tr>
|
|
561
|
+
<td>Testability</td>
|
|
562
|
+
<td>Automated and customized unit testing, performance testing, and integration testing.</td>
|
|
563
|
+
</tr>
|
|
564
|
+
<tr>
|
|
565
|
+
<td>Portability</td>
|
|
566
|
+
<td>Plans for porting to Java, Python, and C++, currently achieved to 80%.</td>
|
|
567
|
+
</tr>
|
|
568
|
+
<tr>
|
|
569
|
+
<td>Reusability</td>
|
|
570
|
+
<td>Fully decoupled, minimized side effects, and adheres to OOP.</td>
|
|
571
|
+
</tr>
|
|
572
|
+
<tr>
|
|
573
|
+
<td>Security</td>
|
|
574
|
+
<td>Carefully designed security for member variables and methods. Read-write separation. Data structure software does not need to consider other security aspects.</td>
|
|
575
|
+
</tr>
|
|
576
|
+
<tr>
|
|
577
|
+
<td>Scalability</td>
|
|
578
|
+
<td>Data structure software does not involve load issues.</td>
|
|
579
|
+
</tr>
|
|
515
580
|
</table>
|
|
516
581
|
|
|
517
|
-

|
|
518
|
-
|
|
519
|
-

|
|
520
|
-
|
|
521
|
-

|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
582
|
|
|
526
583
|
|
|
527
584
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "undirected-graph-typed",
|
|
3
|
-
"version": "1.47.
|
|
3
|
+
"version": "1.47.4",
|
|
4
4
|
"description": "Undirected Graph. Javascript & Typescript Data Structure.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -145,6 +145,6 @@
|
|
|
145
145
|
"typescript": "^4.9.5"
|
|
146
146
|
},
|
|
147
147
|
"dependencies": {
|
|
148
|
-
"data-structure-typed": "^1.47.
|
|
148
|
+
"data-structure-typed": "^1.47.4"
|
|
149
149
|
}
|
|
150
150
|
}
|