@raikuxq/alg-ds 1.1.5 → 1.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +0 -14
- package/package.json +1 -1
- package/lib/algorithms/binary-search.d.ts +0 -5
- package/lib/algorithms/binary-search.js +0 -27
- package/lib/algorithms/factorial.d.ts +0 -9
- package/lib/algorithms/factorial.js +0 -17
- package/lib/algorithms/fibonacci.d.ts +0 -9
- package/lib/algorithms/fibonacci.js +0 -17
- package/lib/algorithms/memoize.d.ts +0 -5
- package/lib/algorithms/memoize.js +0 -22
- package/lib/algorithms/sorts/bubble-sort.d.ts +0 -9
- package/lib/algorithms/sorts/bubble-sort.js +0 -23
- package/lib/algorithms/sorts/insertion-sort.d.ts +0 -9
- package/lib/algorithms/sorts/insertion-sort.js +0 -25
- package/lib/algorithms/sorts/merge-sort.d.ts +0 -9
- package/lib/algorithms/sorts/merge-sort.js +0 -61
- package/lib/algorithms/sorts/quick-sort.d.ts +0 -9
- package/lib/algorithms/sorts/quick-sort.js +0 -45
- package/lib/algorithms/sorts/select-sort.d.ts +0 -9
- package/lib/algorithms/sorts/select-sort.js +0 -20
- package/lib/algorithms/transpose-matrix.d.ts +0 -5
- package/lib/algorithms/transpose-matrix.js +0 -20
- package/lib/constants.d.ts +0 -2
- package/lib/constants.js +0 -6
- package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.d.ts +0 -15
- package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.js +0 -53
- package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +0 -60
- package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +0 -36
- package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.d.ts +0 -13
- package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.js +0 -59
- package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +0 -70
- package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +0 -268
- package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.d.ts +0 -16
- package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.js +0 -70
- package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +0 -57
- package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +0 -234
- package/lib/data-structures/Graph/AbstractGraph.d.ts +0 -84
- package/lib/data-structures/Graph/AbstractGraph.js +0 -141
- package/lib/data-structures/Graph/DirectedGraph.d.ts +0 -24
- package/lib/data-structures/Graph/DirectedGraph.js +0 -85
- package/lib/data-structures/Graph/GraphEdge.d.ts +0 -16
- package/lib/data-structures/Graph/GraphEdge.js +0 -43
- package/lib/data-structures/Graph/UndirectedGraph.d.ts +0 -28
- package/lib/data-structures/Graph/UndirectedGraph.js +0 -102
- package/lib/data-structures/Graph/demo/generateRandomGraph.d.ts +0 -4
- package/lib/data-structures/Graph/demo/generateRandomGraph.js +0 -72
- package/lib/data-structures/Graph/iterator/AbstractGraphIterator.d.ts +0 -35
- package/lib/data-structures/Graph/iterator/AbstractGraphIterator.js +0 -90
- package/lib/data-structures/Graph/iterator/GraphIteratorBFS.d.ts +0 -28
- package/lib/data-structures/Graph/iterator/GraphIteratorBFS.js +0 -70
- package/lib/data-structures/Graph/iterator/GraphIteratorDFS.d.ts +0 -28
- package/lib/data-structures/Graph/iterator/GraphIteratorDFS.js +0 -70
- package/lib/data-structures/Graph/iterator/GraphIteratorDijkstra.d.ts +0 -32
- package/lib/data-structures/Graph/iterator/GraphIteratorDijkstra.js +0 -99
- package/lib/data-structures/Graph/presenter/presenterAdjacencyLists.d.ts +0 -19
- package/lib/data-structures/Graph/presenter/presenterAdjacencyLists.js +0 -28
- package/lib/data-structures/Graph/presenter/presenterAdjacencyMatrix.d.ts +0 -32
- package/lib/data-structures/Graph/presenter/presenterAdjacencyMatrix.js +0 -48
- package/lib/data-structures/Graph/searching/hasPath.d.ts +0 -9
- package/lib/data-structures/Graph/searching/hasPath.js +0 -29
- package/lib/data-structures/Graph/searching/shortestPath.d.ts +0 -9
- package/lib/data-structures/Graph/searching/shortestPath.js +0 -29
- package/lib/data-structures/Graph/strategy/BFSIterationStrategy.d.ts +0 -6
- package/lib/data-structures/Graph/strategy/BFSIterationStrategy.js +0 -13
- package/lib/data-structures/Graph/strategy/DFSIterationStrategy.d.ts +0 -6
- package/lib/data-structures/Graph/strategy/DFSIterationStrategy.js +0 -13
- package/lib/data-structures/Graph/strategy/DijkstraIterationStrategy.d.ts +0 -6
- package/lib/data-structures/Graph/strategy/DijkstraIterationStrategy.js +0 -13
- package/lib/data-structures/Graph/transposing/transposeDirectedGraph.d.ts +0 -2
- package/lib/data-structures/Graph/transposing/transposeDirectedGraph.js +0 -14
- package/lib/data-structures/HashTable/HashTable.d.ts +0 -73
- package/lib/data-structures/HashTable/HashTable.js +0 -169
- package/lib/data-structures/HashTable/HashTableNode.d.ts +0 -11
- package/lib/data-structures/HashTable/HashTableNode.js +0 -39
- package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +0 -125
- package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +0 -236
- package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.d.ts +0 -20
- package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.js +0 -41
- package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +0 -48
- package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.js +0 -150
- package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.d.ts +0 -25
- package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.js +0 -65
- package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +0 -52
- package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.js +0 -137
- package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.d.ts +0 -7
- package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.js +0 -29
- package/lib/data-structures/LoopedArray/LoopedArray.d.ts +0 -86
- package/lib/data-structures/LoopedArray/LoopedArray.js +0 -161
- package/lib/data-structures/Queue/Queue.d.ts +0 -50
- package/lib/data-structures/Queue/Queue.js +0 -83
- package/lib/data-structures/Stack/Stack.d.ts +0 -50
- package/lib/data-structures/Stack/Stack.js +0 -83
- package/lib/exports/algorithms.d.ts +0 -16
- package/lib/exports/algorithms.js +0 -36
- package/lib/exports/constants.d.ts +0 -2
- package/lib/exports/constants.js +0 -7
- package/lib/exports/data-structures.d.ts +0 -11
- package/lib/exports/data-structures.js +0 -24
- package/lib/exports/helpers.d.ts +0 -6
- package/lib/exports/helpers.js +0 -14
- package/lib/exports/sorts.d.ts +0 -6
- package/lib/exports/sorts.js +0 -14
- package/lib/exports/utils.d.ts +0 -3
- package/lib/exports/utils.js +0 -14
- package/lib/exports.d.ts +0 -44
- package/lib/exports.js +0 -89
- package/lib/helpers/createBinaryTree.d.ts +0 -6
- package/lib/helpers/createBinaryTree.js +0 -22
- package/lib/helpers/createGraph.d.ts +0 -6
- package/lib/helpers/createGraph.js +0 -24
- package/lib/helpers/createGraphFromMatrix.d.ts +0 -7
- package/lib/helpers/createGraphFromMatrix.js +0 -37
- package/lib/helpers/createLinkedList.d.ts +0 -3
- package/lib/helpers/createLinkedList.js +0 -21
- package/lib/index.d.ts +0 -3
- package/lib/index.js +0 -6
- package/lib/types/ArrayMatrix.d.ts +0 -1
- package/lib/types/ArrayMatrix.js +0 -3
- package/lib/types/EnumBinarySearchTreeType.d.ts +0 -4
- package/lib/types/EnumBinarySearchTreeType.js +0 -9
- package/lib/types/EnumGraphType.d.ts +0 -4
- package/lib/types/EnumGraphType.js +0 -9
- package/lib/types/EnumLinkedListType.d.ts +0 -4
- package/lib/types/EnumLinkedListType.js +0 -9
- package/lib/types/EnumRandomGenerationFormat.d.ts +0 -4
- package/lib/types/EnumRandomGenerationFormat.js +0 -9
- package/lib/types/EnumTreeTraversalType.d.ts +0 -5
- package/lib/types/EnumTreeTraversalType.js +0 -10
- package/lib/types/FnCompareTwo.d.ts +0 -1
- package/lib/types/FnCompareTwo.js +0 -3
- package/lib/types/FnToMemoize.d.ts +0 -1
- package/lib/types/FnToMemoize.js +0 -3
- package/lib/types/IArrayFacade.d.ts +0 -4
- package/lib/types/IArrayFacade.js +0 -3
- package/lib/types/IBiDirectIterable.d.ts +0 -5
- package/lib/types/IBiDirectIterable.js +0 -3
- package/lib/types/IBiDirectIterator.d.ts +0 -11
- package/lib/types/IBiDirectIterator.js +0 -3
- package/lib/types/IBinaryTree.d.ts +0 -12
- package/lib/types/IBinaryTree.js +0 -3
- package/lib/types/IConvertableToArray.d.ts +0 -4
- package/lib/types/IConvertableToArray.js +0 -3
- package/lib/types/IGraph.d.ts +0 -14
- package/lib/types/IGraph.js +0 -3
- package/lib/types/IGraphIterationStrategy.d.ts +0 -5
- package/lib/types/IGraphIterationStrategy.js +0 -3
- package/lib/types/IGraphIterator.d.ts +0 -11
- package/lib/types/IGraphIterator.js +0 -3
- package/lib/types/IIterable.d.ts +0 -4
- package/lib/types/IIterable.js +0 -3
- package/lib/types/IIterator.d.ts +0 -14
- package/lib/types/IIterator.js +0 -3
- package/lib/types/IKeyValueStorage.d.ts +0 -8
- package/lib/types/IKeyValueStorage.js +0 -3
- package/lib/types/ILinearStorage.d.ts +0 -11
- package/lib/types/ILinearStorage.js +0 -3
- package/lib/types/ILinearStorageRA.d.ts +0 -13
- package/lib/types/ILinearStorageRA.js +0 -3
- package/lib/types/ILinkedList.d.ts +0 -4
- package/lib/types/ILinkedList.js +0 -3
- package/lib/utils.d.ts +0 -29
- package/lib/utils.js +0 -95
package/README.md
CHANGED
|
@@ -47,7 +47,6 @@ Clone this repository and install dependencies by using `yarn` command.
|
|
|
47
47
|
# Navigation
|
|
48
48
|
+ [Algorithms](#algorithms)
|
|
49
49
|
+ [Sorting algorithms](#sorting-algorithms)
|
|
50
|
-
+ [Iterators](#iterators)
|
|
51
50
|
+ [Linear data structures](#linear-data-structures)
|
|
52
51
|
+ [Linked list](#linked-list)
|
|
53
52
|
+ [Looped array](#looped-array)
|
|
@@ -87,19 +86,6 @@ Clone this repository and install dependencies by using `yarn` command.
|
|
|
87
86
|
|
|
88
87
|
|
|
89
88
|
|
|
90
|
-
# Iterators
|
|
91
|
-
|
|
92
|
-
### Interfaces
|
|
93
|
-
[IIterable](src/types/IIterable.ts) — Allows to create an iterator instance.
|
|
94
|
-
|
|
95
|
-
[IBiDirectIterable](src/types/IBiDirectIterable.ts) — Allows to create a bi-direct iterator instance.
|
|
96
|
-
Extends [IIterable](src/types/IIterable.ts) interface.
|
|
97
|
-
|
|
98
|
-
[IIterator](src/types/IIterator.ts) — Allows only next navigation.
|
|
99
|
-
|
|
100
|
-
[IBiDirectIterator](src/types/IBiDirectIterator.ts) — Allows both next and prev navigation.
|
|
101
|
-
Extends [IIterator](src/types/IIterator.ts) interface.
|
|
102
|
-
|
|
103
89
|
|
|
104
90
|
# Linear data structures
|
|
105
91
|
|
package/package.json
CHANGED
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.binarySearch = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Find element's index in sorted array
|
|
6
|
-
* Time complexity: O(log(n))
|
|
7
|
-
*/
|
|
8
|
-
exports.binarySearch = function (elements, searchElement) {
|
|
9
|
-
var length = elements.length;
|
|
10
|
-
var leftIndex = 0;
|
|
11
|
-
var rightIndex = length - 1;
|
|
12
|
-
while (leftIndex <= rightIndex) {
|
|
13
|
-
var midIndex = Math.ceil((leftIndex + rightIndex) / 2);
|
|
14
|
-
var midEl = elements[midIndex];
|
|
15
|
-
if (searchElement == midEl) {
|
|
16
|
-
return midIndex;
|
|
17
|
-
}
|
|
18
|
-
else if (midEl > searchElement) {
|
|
19
|
-
rightIndex = midIndex - 1;
|
|
20
|
-
}
|
|
21
|
-
else if (midEl < searchElement) {
|
|
22
|
-
leftIndex = midIndex + 1;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return null;
|
|
26
|
-
};
|
|
27
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYmluYXJ5LXNlYXJjaC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGdvcml0aG1zL2JpbmFyeS1zZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7OztHQUdHO0FBQ1UsUUFBQSxZQUFZLEdBQUcsVUFDMUIsUUFBdUIsRUFDdkIsYUFBcUI7SUFFckIsSUFBTSxNQUFNLEdBQVcsUUFBUSxDQUFDLE1BQU0sQ0FBQztJQUV2QyxJQUFJLFNBQVMsR0FBRyxDQUFDLENBQUM7SUFDbEIsSUFBSSxVQUFVLEdBQVcsTUFBTSxHQUFHLENBQUMsQ0FBQztJQUVwQyxPQUFPLFNBQVMsSUFBSSxVQUFVLEVBQUU7UUFDOUIsSUFBTSxRQUFRLEdBQVcsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsR0FBRyxVQUFVLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQztRQUNqRSxJQUFNLEtBQUssR0FBVyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFFekMsSUFBSSxhQUFhLElBQUksS0FBSyxFQUFFO1lBQzFCLE9BQU8sUUFBUSxDQUFDO1NBQ2pCO2FBQU0sSUFBSSxLQUFLLEdBQUcsYUFBYSxFQUFFO1lBQ2hDLFVBQVUsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1NBQzNCO2FBQU0sSUFBSSxLQUFLLEdBQUcsYUFBYSxFQUFFO1lBQ2hDLFNBQVMsR0FBRyxRQUFRLEdBQUcsQ0FBQyxDQUFDO1NBQzFCO0tBQ0Y7SUFFRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUMsQ0FBQyJ9
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FnToMemoize } from "../types/FnToMemoize";
|
|
2
|
-
/**
|
|
3
|
-
* Time complexity: O(n!)
|
|
4
|
-
*/
|
|
5
|
-
export declare const factorial: (x: number) => number;
|
|
6
|
-
/**
|
|
7
|
-
* Time complexity: O(n) - due to caching
|
|
8
|
-
*/
|
|
9
|
-
export declare const memoizedFactorial: FnToMemoize<number, number>;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.memoizedFactorial = exports.factorial = void 0;
|
|
4
|
-
var memoize_1 = require("./memoize");
|
|
5
|
-
/**
|
|
6
|
-
* Time complexity: O(n!)
|
|
7
|
-
*/
|
|
8
|
-
exports.factorial = function (x) {
|
|
9
|
-
return x > 1 ? x * exports.factorial(x - 1) : x;
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Time complexity: O(n) - due to caching
|
|
13
|
-
*/
|
|
14
|
-
exports.memoizedFactorial = memoize_1.memoize(function (n) {
|
|
15
|
-
return n > 1 ? n * exports.memoizedFactorial(n - 1) : n;
|
|
16
|
-
});
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmFjdG9yaWFsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsZ29yaXRobXMvZmFjdG9yaWFsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUFBLHFDQUFvQztBQUdwQzs7R0FFRztBQUNVLFFBQUEsU0FBUyxHQUFHLFVBQUMsQ0FBUztJQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxpQkFBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQzFDLENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ1UsUUFBQSxpQkFBaUIsR0FBZ0MsaUJBQU8sQ0FDbkUsVUFBQyxDQUFTO0lBQ1IsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcseUJBQWlCLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDbEQsQ0FBQyxDQUNGLENBQUMifQ==
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
import { FnToMemoize } from "../types/FnToMemoize";
|
|
2
|
-
/**
|
|
3
|
-
* Time complexity: O(n!)
|
|
4
|
-
*/
|
|
5
|
-
export declare const fibonacci: (n: number) => number;
|
|
6
|
-
/**
|
|
7
|
-
* Time complexity: O(n) - due to caching
|
|
8
|
-
*/
|
|
9
|
-
export declare const memoizedFibonacci: FnToMemoize<number, number>;
|
|
@@ -1,17 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.memoizedFibonacci = exports.fibonacci = void 0;
|
|
4
|
-
var memoize_1 = require("./memoize");
|
|
5
|
-
/**
|
|
6
|
-
* Time complexity: O(n!)
|
|
7
|
-
*/
|
|
8
|
-
exports.fibonacci = function (n) {
|
|
9
|
-
return n > 1 ? exports.fibonacci(n - 1) + exports.fibonacci(n - 2) : n;
|
|
10
|
-
};
|
|
11
|
-
/**
|
|
12
|
-
* Time complexity: O(n) - due to caching
|
|
13
|
-
*/
|
|
14
|
-
exports.memoizedFibonacci = memoize_1.memoize(function (n) {
|
|
15
|
-
return n > 1 ? exports.memoizedFibonacci(n - 1) + exports.memoizedFibonacci(n - 2) : n;
|
|
16
|
-
});
|
|
17
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZmlib25hY2NpLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FsZ29yaXRobXMvZmlib25hY2NpLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUNBLHFDQUFvQztBQUVwQzs7R0FFRztBQUNVLFFBQUEsU0FBUyxHQUFHLFVBQUMsQ0FBUztJQUNqQyxPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLGlCQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLGlCQUFTLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFDekQsQ0FBQyxDQUFDO0FBRUY7O0dBRUc7QUFDVSxRQUFBLGlCQUFpQixHQUFnQyxpQkFBTyxDQUNuRSxVQUFDLENBQVM7SUFDUixPQUFPLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLHlCQUFpQixDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyx5QkFBaUIsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUN6RSxDQUFDLENBQ0YsQ0FBQyJ9
|
|
@@ -1,5 +0,0 @@
|
|
|
1
|
-
import { FnToMemoize } from "../types/FnToMemoize";
|
|
2
|
-
/**
|
|
3
|
-
* Wrapper function that storing the results of calls and returning the cached result when the same inputs occur again
|
|
4
|
-
*/
|
|
5
|
-
export declare const memoize: <Key, Value>(fn: FnToMemoize<Key, Value>) => FnToMemoize<Key, Value>;
|
|
@@ -1,22 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.memoize = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Wrapper function that storing the results of calls and returning the cached result when the same inputs occur again
|
|
6
|
-
*/
|
|
7
|
-
exports.memoize = function (fn) {
|
|
8
|
-
var cache = new Map();
|
|
9
|
-
return function () {
|
|
10
|
-
var args = [];
|
|
11
|
-
for (var _i = 0; _i < arguments.length; _i++) {
|
|
12
|
-
args[_i] = arguments[_i];
|
|
13
|
-
}
|
|
14
|
-
var jsonArgs = JSON.stringify(args);
|
|
15
|
-
if (!cache.has(jsonArgs)) {
|
|
16
|
-
var result = fn.apply(void 0, args);
|
|
17
|
-
cache.set(jsonArgs, result);
|
|
18
|
-
}
|
|
19
|
-
return cache.get(jsonArgs);
|
|
20
|
-
};
|
|
21
|
-
};
|
|
22
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVtb2l6ZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGdvcml0aG1zL21lbW9pemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7O0dBRUc7QUFDVSxRQUFBLE9BQU8sR0FBRyxVQUNyQixFQUEyQjtJQUUzQixJQUFNLEtBQUssR0FBRyxJQUFJLEdBQUcsRUFBaUIsQ0FBQztJQUV2QyxPQUFPO1FBQUMsY0FBbUI7YUFBbkIsVUFBbUIsRUFBbkIscUJBQW1CLEVBQW5CLElBQW1CO1lBQW5CLHlCQUFtQjs7UUFDekIsSUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUV0QyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsRUFBRTtZQUN4QixJQUFNLE1BQU0sR0FBRyxFQUFFLGVBQUksSUFBSSxDQUFDLENBQUM7WUFDM0IsS0FBSyxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLENBQUM7U0FDN0I7UUFFRCxPQUFjLEtBQUssQ0FBQyxHQUFHLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDcEMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
|
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.bubbleSort = void 0;
|
|
4
|
-
var utils_1 = require("../../utils");
|
|
5
|
-
/**
|
|
6
|
-
* Bubble sorting algorithm
|
|
7
|
-
*
|
|
8
|
-
* @description
|
|
9
|
-
* Time complexity: Best O(n); Avg O(n \^ 2); Worst O(n \^ 2)
|
|
10
|
-
* @description
|
|
11
|
-
* Memory complexity: Worst case: O(1)
|
|
12
|
-
*/
|
|
13
|
-
exports.bubbleSort = function (arr) {
|
|
14
|
-
for (var i = 0; i < arr.length - 1; i++) {
|
|
15
|
-
for (var j = 0; j < arr.length - 1; j++) {
|
|
16
|
-
if (arr[j] > arr[j + 1]) {
|
|
17
|
-
utils_1.swapArrayItems(arr, j, j + 1);
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
}
|
|
21
|
-
return arr;
|
|
22
|
-
};
|
|
23
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnViYmxlLXNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxnb3JpdGhtcy9zb3J0cy9idWJibGUtc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBNkM7QUFFN0M7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsVUFBVSxHQUFHLFVBQUMsR0FBa0I7SUFDM0MsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEdBQUcsQ0FBQyxFQUFFLENBQUMsRUFBRSxFQUFFO1FBQ3ZDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsRUFBRSxDQUFDLEVBQUUsRUFBRTtZQUN2QyxJQUFJLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO2dCQUN2QixzQkFBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO2FBQy9CO1NBQ0Y7S0FDRjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
|
|
@@ -1,25 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.insertionSort = void 0;
|
|
4
|
-
var utils_1 = require("../../utils");
|
|
5
|
-
/**
|
|
6
|
-
* Insertion sorting algorithm
|
|
7
|
-
*
|
|
8
|
-
* @description
|
|
9
|
-
* Time complexity: Best O(n); Avg O(n \^ 2); Worst O(n \^ 2);
|
|
10
|
-
* @description
|
|
11
|
-
* Memory complexity: Worst case: O(1)
|
|
12
|
-
*/
|
|
13
|
-
exports.insertionSort = function (arr) {
|
|
14
|
-
for (var i = 1; i < arr.length; i++) {
|
|
15
|
-
var current = arr[i];
|
|
16
|
-
var j = i - 1;
|
|
17
|
-
while (j >= 0 && arr[j] > current) {
|
|
18
|
-
utils_1.swapArrayItems(arr, j + 1, j);
|
|
19
|
-
j--;
|
|
20
|
-
}
|
|
21
|
-
arr[j + 1] = current;
|
|
22
|
-
}
|
|
23
|
-
return arr;
|
|
24
|
-
};
|
|
25
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5zZXJ0aW9uLXNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxnb3JpdGhtcy9zb3J0cy9pbnNlcnRpb24tc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBNkM7QUFFN0M7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsYUFBYSxHQUFHLFVBQUMsR0FBa0I7SUFDOUMsS0FBSyxJQUFJLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsQ0FBQyxFQUFFLEVBQUU7UUFDbkMsSUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFZCxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLE9BQU8sRUFBRTtZQUNqQyxzQkFBYyxDQUFDLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQzlCLENBQUMsRUFBRSxDQUFDO1NBQ0w7UUFFRCxHQUFHLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxHQUFHLE9BQU8sQ0FBQztLQUN0QjtJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Merge sorting algorithm
|
|
3
|
-
*
|
|
4
|
-
* @description
|
|
5
|
-
* Time complexity: Best O(n * log(n)); Avg O(n * log(n)); Worst O(n * log(n))
|
|
6
|
-
* @description
|
|
7
|
-
* Memory complexity: Worst case: O(n)
|
|
8
|
-
*/
|
|
9
|
-
export declare const mergeSort: (arr: Array<number>) => Array<number>;
|
|
@@ -1,61 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.mergeSort = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Merge two sorted arrays into one array
|
|
6
|
-
*/
|
|
7
|
-
var merge = function (arr, leftIndex, midIndex, rightIndex) {
|
|
8
|
-
var container = arr.slice(leftIndex, rightIndex + 1);
|
|
9
|
-
var resultArrIndex = leftIndex;
|
|
10
|
-
var leftHalfIndex = leftIndex;
|
|
11
|
-
var rightHalfIndex = midIndex + 1;
|
|
12
|
-
/** While both halves of array are not ended */
|
|
13
|
-
while (leftHalfIndex <= midIndex && rightHalfIndex <= rightIndex) {
|
|
14
|
-
var leftHalfElement = container[leftHalfIndex - leftIndex];
|
|
15
|
-
var rightHalfElement = container[rightHalfIndex - leftIndex];
|
|
16
|
-
if (leftHalfElement < rightHalfElement) {
|
|
17
|
-
arr[resultArrIndex] = leftHalfElement;
|
|
18
|
-
leftHalfIndex++;
|
|
19
|
-
}
|
|
20
|
-
else {
|
|
21
|
-
arr[resultArrIndex] = rightHalfElement;
|
|
22
|
-
rightHalfIndex++;
|
|
23
|
-
}
|
|
24
|
-
resultArrIndex++;
|
|
25
|
-
}
|
|
26
|
-
/** If one of halves is ended, the remaining one will just be pushed to result */
|
|
27
|
-
while (leftHalfIndex <= midIndex) {
|
|
28
|
-
arr[resultArrIndex] = container[leftHalfIndex - leftIndex];
|
|
29
|
-
resultArrIndex++;
|
|
30
|
-
leftHalfIndex++;
|
|
31
|
-
}
|
|
32
|
-
while (rightHalfIndex <= rightIndex) {
|
|
33
|
-
arr[resultArrIndex] = container[rightHalfIndex - leftIndex];
|
|
34
|
-
resultArrIndex++;
|
|
35
|
-
rightHalfIndex++;
|
|
36
|
-
}
|
|
37
|
-
};
|
|
38
|
-
/**
|
|
39
|
-
* Divide array into 2 halves and merge them
|
|
40
|
-
*/
|
|
41
|
-
var sortRange = function (arr, leftIndex, rightIndex) {
|
|
42
|
-
if (rightIndex > leftIndex) {
|
|
43
|
-
var midIndex = Math.floor(leftIndex + (rightIndex - leftIndex) / 2);
|
|
44
|
-
sortRange(arr, leftIndex, midIndex);
|
|
45
|
-
sortRange(arr, midIndex + 1, rightIndex);
|
|
46
|
-
merge(arr, leftIndex, midIndex, rightIndex);
|
|
47
|
-
}
|
|
48
|
-
};
|
|
49
|
-
/**
|
|
50
|
-
* Merge sorting algorithm
|
|
51
|
-
*
|
|
52
|
-
* @description
|
|
53
|
-
* Time complexity: Best O(n * log(n)); Avg O(n * log(n)); Worst O(n * log(n))
|
|
54
|
-
* @description
|
|
55
|
-
* Memory complexity: Worst case: O(n)
|
|
56
|
-
*/
|
|
57
|
-
exports.mergeSort = function (arr) {
|
|
58
|
-
sortRange(arr, 0, arr.length - 1);
|
|
59
|
-
return arr;
|
|
60
|
-
};
|
|
61
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWVyZ2Utc29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGdvcml0aG1zL3NvcnRzL21lcmdlLXNvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUE7O0dBRUc7QUFDSCxJQUFNLEtBQUssR0FBRyxVQUNaLEdBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLFFBQWdCLEVBQ2hCLFVBQWtCO0lBRWxCLElBQU0sU0FBUyxHQUFHLEdBQUcsQ0FBQyxLQUFLLENBQUMsU0FBUyxFQUFFLFVBQVUsR0FBRyxDQUFDLENBQUMsQ0FBQztJQUV2RCxJQUFJLGNBQWMsR0FBRyxTQUFTLENBQUM7SUFDL0IsSUFBSSxhQUFhLEdBQUcsU0FBUyxDQUFDO0lBQzlCLElBQUksY0FBYyxHQUFHLFFBQVEsR0FBRyxDQUFDLENBQUM7SUFFbEMsK0NBQStDO0lBQy9DLE9BQU8sYUFBYSxJQUFJLFFBQVEsSUFBSSxjQUFjLElBQUksVUFBVSxFQUFFO1FBQ2hFLElBQU0sZUFBZSxHQUFHLFNBQVMsQ0FBQyxhQUFhLEdBQUcsU0FBUyxDQUFDLENBQUM7UUFDN0QsSUFBTSxnQkFBZ0IsR0FBRyxTQUFTLENBQUMsY0FBYyxHQUFHLFNBQVMsQ0FBQyxDQUFDO1FBRS9ELElBQUksZUFBZSxHQUFHLGdCQUFnQixFQUFFO1lBQ3RDLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxlQUFlLENBQUM7WUFDdEMsYUFBYSxFQUFFLENBQUM7U0FDakI7YUFBTTtZQUNMLEdBQUcsQ0FBQyxjQUFjLENBQUMsR0FBRyxnQkFBZ0IsQ0FBQztZQUN2QyxjQUFjLEVBQUUsQ0FBQztTQUNsQjtRQUNELGNBQWMsRUFBRSxDQUFDO0tBQ2xCO0lBRUQsaUZBQWlGO0lBQ2pGLE9BQU8sYUFBYSxJQUFJLFFBQVEsRUFBRTtRQUNoQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsU0FBUyxDQUFDLGFBQWEsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUMzRCxjQUFjLEVBQUUsQ0FBQztRQUNqQixhQUFhLEVBQUUsQ0FBQztLQUNqQjtJQUNELE9BQU8sY0FBYyxJQUFJLFVBQVUsRUFBRTtRQUNuQyxHQUFHLENBQUMsY0FBYyxDQUFDLEdBQUcsU0FBUyxDQUFDLGNBQWMsR0FBRyxTQUFTLENBQUMsQ0FBQztRQUM1RCxjQUFjLEVBQUUsQ0FBQztRQUNqQixjQUFjLEVBQUUsQ0FBQztLQUNsQjtBQUNILENBQUMsQ0FBQztBQUVGOztHQUVHO0FBQ0gsSUFBTSxTQUFTLEdBQUcsVUFDaEIsR0FBa0IsRUFDbEIsU0FBaUIsRUFDakIsVUFBa0I7SUFFbEIsSUFBSSxVQUFVLEdBQUcsU0FBUyxFQUFFO1FBQzFCLElBQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsU0FBUyxHQUFHLENBQUMsVUFBVSxHQUFHLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDO1FBRXRFLFNBQVMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQ3BDLFNBQVMsQ0FBQyxHQUFHLEVBQUUsUUFBUSxHQUFHLENBQUMsRUFBRSxVQUFVLENBQUMsQ0FBQztRQUV6QyxLQUFLLENBQUMsR0FBRyxFQUFFLFNBQVMsRUFBRSxRQUFRLEVBQUUsVUFBVSxDQUFDLENBQUM7S0FDN0M7QUFDSCxDQUFDLENBQUM7QUFFRjs7Ozs7OztHQU9HO0FBQ1UsUUFBQSxTQUFTLEdBQUcsVUFBQyxHQUFrQjtJQUMxQyxTQUFTLENBQUMsR0FBRyxFQUFFLENBQUMsRUFBRSxHQUFHLENBQUMsTUFBTSxHQUFHLENBQUMsQ0FBQyxDQUFDO0lBRWxDLE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.quickSort = void 0;
|
|
4
|
-
var utils_1 = require("../../utils");
|
|
5
|
-
/**
|
|
6
|
-
* Quick sort algorithm
|
|
7
|
-
*
|
|
8
|
-
* @description
|
|
9
|
-
* Time complexity: Best O(n * log(n)); Avg O(n * log(n)); Worst O(n ^2)
|
|
10
|
-
* @description
|
|
11
|
-
* Memory complexity: Worst case: O(1)
|
|
12
|
-
*/
|
|
13
|
-
exports.quickSort = function (arr) {
|
|
14
|
-
var partition = function (arr, leftIndex, rightIndex) {
|
|
15
|
-
var pivot = arr[leftIndex];
|
|
16
|
-
var leftWall = leftIndex;
|
|
17
|
-
var rightWall = rightIndex;
|
|
18
|
-
while (leftWall <= rightWall) {
|
|
19
|
-
while (arr[rightWall] > pivot) {
|
|
20
|
-
rightWall--;
|
|
21
|
-
}
|
|
22
|
-
while (arr[leftWall] < pivot) {
|
|
23
|
-
leftWall++;
|
|
24
|
-
}
|
|
25
|
-
if (leftWall <= rightWall) {
|
|
26
|
-
utils_1.swapArrayItems(arr, leftWall, rightWall);
|
|
27
|
-
rightWall--;
|
|
28
|
-
leftWall++;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
return leftWall;
|
|
32
|
-
};
|
|
33
|
-
var sort = function (arr, leftIndex, rightIndex) {
|
|
34
|
-
if (leftIndex === void 0) { leftIndex = 0; }
|
|
35
|
-
if (rightIndex === void 0) { rightIndex = arr.length - 1; }
|
|
36
|
-
if (leftIndex < rightIndex) {
|
|
37
|
-
var pivot = partition(arr, leftIndex, rightIndex);
|
|
38
|
-
sort(arr, leftIndex, pivot - 1);
|
|
39
|
-
sort(arr, pivot, rightIndex);
|
|
40
|
-
}
|
|
41
|
-
return arr;
|
|
42
|
-
};
|
|
43
|
-
return sort(arr);
|
|
44
|
-
};
|
|
45
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVpY2stc29ydC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uL3NyYy9hbGdvcml0aG1zL3NvcnRzL3F1aWNrLXNvcnQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEscUNBQTZDO0FBRTdDOzs7Ozs7O0dBT0c7QUFDVSxRQUFBLFNBQVMsR0FBRyxVQUFDLEdBQWtCO0lBQzFDLElBQU0sU0FBUyxHQUFHLFVBQ2hCLEdBQWtCLEVBQ2xCLFNBQWlCLEVBQ2pCLFVBQWtCO1FBRWxCLElBQU0sS0FBSyxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUU3QixJQUFJLFFBQVEsR0FBRyxTQUFTLENBQUM7UUFDekIsSUFBSSxTQUFTLEdBQUcsVUFBVSxDQUFDO1FBRTNCLE9BQU8sUUFBUSxJQUFJLFNBQVMsRUFBRTtZQUM1QixPQUFPLEdBQUcsQ0FBQyxTQUFTLENBQUMsR0FBRyxLQUFLLEVBQUU7Z0JBQzdCLFNBQVMsRUFBRSxDQUFDO2FBQ2I7WUFDRCxPQUFPLEdBQUcsQ0FBQyxRQUFRLENBQUMsR0FBRyxLQUFLLEVBQUU7Z0JBQzVCLFFBQVEsRUFBRSxDQUFDO2FBQ1o7WUFDRCxJQUFJLFFBQVEsSUFBSSxTQUFTLEVBQUU7Z0JBQ3pCLHNCQUFjLENBQUMsR0FBRyxFQUFFLFFBQVEsRUFBRSxTQUFTLENBQUMsQ0FBQztnQkFDekMsU0FBUyxFQUFFLENBQUM7Z0JBQ1osUUFBUSxFQUFFLENBQUM7YUFDWjtTQUNGO1FBRUQsT0FBTyxRQUFRLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0lBRUYsSUFBTSxJQUFJLEdBQUcsVUFDWCxHQUFrQixFQUNsQixTQUFhLEVBQ2IsVUFBbUM7UUFEbkMsMEJBQUEsRUFBQSxhQUFhO1FBQ2IsMkJBQUEsRUFBQSxhQUFxQixHQUFHLENBQUMsTUFBTSxHQUFHLENBQUM7UUFFbkMsSUFBSSxTQUFTLEdBQUcsVUFBVSxFQUFFO1lBQzFCLElBQU0sS0FBSyxHQUFHLFNBQVMsQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLFVBQVUsQ0FBQyxDQUFDO1lBRXBELElBQUksQ0FBQyxHQUFHLEVBQUUsU0FBUyxFQUFFLEtBQUssR0FBRyxDQUFDLENBQUMsQ0FBQztZQUNoQyxJQUFJLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztTQUM5QjtRQUNELE9BQU8sR0FBRyxDQUFDO0lBQ2IsQ0FBQyxDQUFDO0lBRUYsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDbkIsQ0FBQyxDQUFDIn0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.selectSort = void 0;
|
|
4
|
-
var utils_1 = require("../../utils");
|
|
5
|
-
/**
|
|
6
|
-
* Selection sorting algorithm
|
|
7
|
-
*
|
|
8
|
-
* @description
|
|
9
|
-
* Time complexity: Best O(n \^ 2); Avg O(n \^ 2); Worst O(n \^ 2)
|
|
10
|
-
* @description
|
|
11
|
-
* Memory complexity: Worst case: O(1)
|
|
12
|
-
*/
|
|
13
|
-
exports.selectSort = function (arr) {
|
|
14
|
-
for (var index = 0; index < arr.length; index++) {
|
|
15
|
-
var minIndex = utils_1.getMinIndexFromIndex(arr, index);
|
|
16
|
-
utils_1.swapArrayItems(arr, minIndex, index);
|
|
17
|
-
}
|
|
18
|
-
return arr;
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2VsZWN0LXNvcnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvYWxnb3JpdGhtcy9zb3J0cy9zZWxlY3Qtc29ydC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBQSxxQ0FBbUU7QUFFbkU7Ozs7Ozs7R0FPRztBQUNVLFFBQUEsVUFBVSxHQUFHLFVBQUMsR0FBa0I7SUFDM0MsS0FBSyxJQUFJLEtBQUssR0FBRyxDQUFDLEVBQUUsS0FBSyxHQUFHLEdBQUcsQ0FBQyxNQUFNLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDL0MsSUFBTSxRQUFRLEdBQVcsNEJBQW9CLENBQUMsR0FBRyxFQUFFLEtBQUssQ0FBQyxDQUFDO1FBRTFELHNCQUFjLENBQVMsR0FBRyxFQUFFLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztLQUM5QztJQUVELE9BQU8sR0FBRyxDQUFDO0FBQ2IsQ0FBQyxDQUFDIn0=
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.transposeMatrix = void 0;
|
|
4
|
-
/**
|
|
5
|
-
* Will flips a matrix over its diagonal
|
|
6
|
-
*/
|
|
7
|
-
exports.transposeMatrix = function (matrix) {
|
|
8
|
-
/** Validation */
|
|
9
|
-
matrix.forEach(function (subArray) {
|
|
10
|
-
var checkIsSameLength = subArray.length === matrix.length;
|
|
11
|
-
if (!checkIsSameLength) {
|
|
12
|
-
throw new Error("Given array is not a matrix");
|
|
13
|
-
}
|
|
14
|
-
});
|
|
15
|
-
return matrix.reduce(function (acc, current, currentIndex) {
|
|
16
|
-
acc[currentIndex] = matrix.map(function (rowArr) { return rowArr[currentIndex]; });
|
|
17
|
-
return acc;
|
|
18
|
-
}, new Array(matrix.length));
|
|
19
|
-
};
|
|
20
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3NlLW1hdHJpeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGdvcml0aG1zL3RyYW5zcG9zZS1tYXRyaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7O0dBRUc7QUFDVSxRQUFBLGVBQWUsR0FBRyxVQUFDLE1BQW1CO0lBQ2pELGlCQUFpQjtJQUNqQixNQUFNLENBQUMsT0FBTyxDQUFDLFVBQUMsUUFBUTtRQUN0QixJQUFNLGlCQUFpQixHQUFHLFFBQVEsQ0FBQyxNQUFNLEtBQUssTUFBTSxDQUFDLE1BQU0sQ0FBQztRQUM1RCxJQUFJLENBQUMsaUJBQWlCLEVBQUU7WUFDdEIsTUFBTSxJQUFJLEtBQUssQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO1NBQ2hEO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxPQUFPLE1BQU0sQ0FBQyxNQUFNLENBQUMsVUFBQyxHQUFHLEVBQUUsT0FBTyxFQUFFLFlBQVk7UUFDOUMsR0FBRyxDQUFDLFlBQVksQ0FBQyxHQUFHLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBQyxNQUFNLElBQUssT0FBQSxNQUFNLENBQUMsWUFBWSxDQUFDLEVBQXBCLENBQW9CLENBQUMsQ0FBQztRQUNqRSxPQUFPLEdBQUcsQ0FBQztJQUNiLENBQUMsRUFBRSxJQUFJLEtBQUssQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztBQUMvQixDQUFDLENBQUMifQ==
|
package/lib/constants.d.ts
DELETED
package/lib/constants.js
DELETED
|
@@ -1,6 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.EDGE_NOT_EXISTS_STATE = exports.EDGE_EXISTS_STATE = void 0;
|
|
4
|
-
exports.EDGE_EXISTS_STATE = 1;
|
|
5
|
-
exports.EDGE_NOT_EXISTS_STATE = 0;
|
|
6
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLGlCQUFpQixHQUFHLENBQUMsQ0FBQztBQUN0QixRQUFBLHFCQUFxQixHQUFHLENBQUMsQ0FBQyJ9
|
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export default abstract class AbstractBinaryNode<T> {
|
|
2
|
-
protected _data: T;
|
|
3
|
-
protected _left: AbstractBinaryNode<T> | null;
|
|
4
|
-
protected _right: AbstractBinaryNode<T> | null;
|
|
5
|
-
protected _parent: AbstractBinaryNode<T> | null;
|
|
6
|
-
protected constructor(initialData: T);
|
|
7
|
-
get data(): T;
|
|
8
|
-
set data(value: T);
|
|
9
|
-
get left(): AbstractBinaryNode<T> | null;
|
|
10
|
-
set left(value: AbstractBinaryNode<T> | null);
|
|
11
|
-
get right(): AbstractBinaryNode<T> | null;
|
|
12
|
-
set right(value: AbstractBinaryNode<T> | null);
|
|
13
|
-
get parent(): AbstractBinaryNode<T> | null;
|
|
14
|
-
set parent(value: AbstractBinaryNode<T> | null);
|
|
15
|
-
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
var AbstractBinaryNode = /** @class */ (function () {
|
|
4
|
-
function AbstractBinaryNode(initialData) {
|
|
5
|
-
this._data = initialData;
|
|
6
|
-
this._left = null;
|
|
7
|
-
this._right = null;
|
|
8
|
-
this._parent = null;
|
|
9
|
-
}
|
|
10
|
-
Object.defineProperty(AbstractBinaryNode.prototype, "data", {
|
|
11
|
-
get: function () {
|
|
12
|
-
return this._data;
|
|
13
|
-
},
|
|
14
|
-
set: function (value) {
|
|
15
|
-
this._data = value;
|
|
16
|
-
},
|
|
17
|
-
enumerable: false,
|
|
18
|
-
configurable: true
|
|
19
|
-
});
|
|
20
|
-
Object.defineProperty(AbstractBinaryNode.prototype, "left", {
|
|
21
|
-
get: function () {
|
|
22
|
-
return this._left;
|
|
23
|
-
},
|
|
24
|
-
set: function (value) {
|
|
25
|
-
this._left = value;
|
|
26
|
-
},
|
|
27
|
-
enumerable: false,
|
|
28
|
-
configurable: true
|
|
29
|
-
});
|
|
30
|
-
Object.defineProperty(AbstractBinaryNode.prototype, "right", {
|
|
31
|
-
get: function () {
|
|
32
|
-
return this._right;
|
|
33
|
-
},
|
|
34
|
-
set: function (value) {
|
|
35
|
-
this._right = value;
|
|
36
|
-
},
|
|
37
|
-
enumerable: false,
|
|
38
|
-
configurable: true
|
|
39
|
-
});
|
|
40
|
-
Object.defineProperty(AbstractBinaryNode.prototype, "parent", {
|
|
41
|
-
get: function () {
|
|
42
|
-
return this._parent;
|
|
43
|
-
},
|
|
44
|
-
set: function (value) {
|
|
45
|
-
this._parent = value;
|
|
46
|
-
},
|
|
47
|
-
enumerable: false,
|
|
48
|
-
configurable: true
|
|
49
|
-
});
|
|
50
|
-
return AbstractBinaryNode;
|
|
51
|
-
}());
|
|
52
|
-
exports.default = AbstractBinaryNode;
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RCaW5hcnlOb2RlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGEtc3RydWN0dXJlcy9CaW5hcnlUcmVlL0Fic3RyYWN0QmluYXJ5VHJlZS9BYnN0cmFjdEJpbmFyeU5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFBQTtJQU1FLDRCQUFzQixXQUFjO1FBQ2xDLElBQUksQ0FBQyxLQUFLLEdBQUcsV0FBVyxDQUFDO1FBQ3pCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO0lBQ3RCLENBQUM7SUFFRCxzQkFBVyxvQ0FBSTthQUFmO1lBQ0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDO1FBQ3BCLENBQUM7YUFFRCxVQUFnQixLQUFRO1lBQ3RCLElBQUksQ0FBQyxLQUFLLEdBQUcsS0FBSyxDQUFDO1FBQ3JCLENBQUM7OztPQUpBO0lBTUQsc0JBQVcsb0NBQUk7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO2FBRUQsVUFBZ0IsS0FBbUM7WUFDakQsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQzs7O09BSkE7SUFNRCxzQkFBVyxxQ0FBSzthQUFoQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDO2FBRUQsVUFBaUIsS0FBbUM7WUFDbEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQzs7O09BSkE7SUFNRCxzQkFBVyxzQ0FBTTthQUFqQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN0QixDQUFDO2FBRUQsVUFBa0IsS0FBbUM7WUFDbkQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQzs7O09BSkE7SUFLSCx5QkFBQztBQUFELENBQUMsQUE1Q0QsSUE0Q0MifQ==
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import IBinaryTree from "../../../types/IBinaryTree";
|
|
2
|
-
import { FnCompareTwo } from "../../../types/FnCompareTwo";
|
|
3
|
-
import AbstractBinaryNode from "./AbstractBinaryNode";
|
|
4
|
-
import { EnumTreeTraversalType } from "../../../types/EnumTreeTraversalType";
|
|
5
|
-
/**
|
|
6
|
-
*
|
|
7
|
-
*/
|
|
8
|
-
export default abstract class AbstractBinaryTree<T> implements IBinaryTree<T> {
|
|
9
|
-
/**
|
|
10
|
-
* Function that checks is node A better
|
|
11
|
-
* @default a > b
|
|
12
|
-
* @example 5 > 4
|
|
13
|
-
* @example 'abc' > 'aba'
|
|
14
|
-
*/
|
|
15
|
-
protected compare: FnCompareTwo<T>;
|
|
16
|
-
protected _head: AbstractBinaryNode<T> | null;
|
|
17
|
-
protected _length: number;
|
|
18
|
-
/**
|
|
19
|
-
*
|
|
20
|
-
* @param fnCompare
|
|
21
|
-
* @protected
|
|
22
|
-
*/
|
|
23
|
-
protected constructor(fnCompare?: FnCompareTwo<T>);
|
|
24
|
-
/**
|
|
25
|
-
* Returns nodes count in the entire tree
|
|
26
|
-
*/
|
|
27
|
-
length(): number;
|
|
28
|
-
/**
|
|
29
|
-
* Will create new node and place it according to the type of tree rules
|
|
30
|
-
*/
|
|
31
|
-
abstract insert(value: T): void;
|
|
32
|
-
/**
|
|
33
|
-
* Will check if tree has a node with given data
|
|
34
|
-
*/
|
|
35
|
-
abstract has(value: T): boolean;
|
|
36
|
-
/**
|
|
37
|
-
* Will delete node from the tree and restructure it
|
|
38
|
-
*/
|
|
39
|
-
abstract delete(value: T): void;
|
|
40
|
-
/**
|
|
41
|
-
* Max value of the tree
|
|
42
|
-
*/
|
|
43
|
-
abstract max(): T;
|
|
44
|
-
/**
|
|
45
|
-
* Min value of the tree
|
|
46
|
-
*/
|
|
47
|
-
abstract min(): T;
|
|
48
|
-
/**
|
|
49
|
-
* Returns same class instance with new head node
|
|
50
|
-
*/
|
|
51
|
-
abstract subtree(value: T): IBinaryTree<T>;
|
|
52
|
-
/**
|
|
53
|
-
* Returns the highest branch length in the tree
|
|
54
|
-
*/
|
|
55
|
-
abstract height(): number;
|
|
56
|
-
/**
|
|
57
|
-
* In-order/Pre-order/Post-order traversing of the tree
|
|
58
|
-
*/
|
|
59
|
-
abstract traverse(type: EnumTreeTraversalType): Array<T>;
|
|
60
|
-
}
|
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
/**
|
|
4
|
-
*
|
|
5
|
-
*/
|
|
6
|
-
var AbstractBinaryTree = /** @class */ (function () {
|
|
7
|
-
/**
|
|
8
|
-
*
|
|
9
|
-
* @param fnCompare
|
|
10
|
-
* @protected
|
|
11
|
-
*/
|
|
12
|
-
function AbstractBinaryTree(fnCompare) {
|
|
13
|
-
/**
|
|
14
|
-
* Function that checks is node A better
|
|
15
|
-
* @default a > b
|
|
16
|
-
* @example 5 > 4
|
|
17
|
-
* @example 'abc' > 'aba'
|
|
18
|
-
*/
|
|
19
|
-
this.compare = function (a, b) { return a > b; };
|
|
20
|
-
if (fnCompare) {
|
|
21
|
-
this.compare = fnCompare;
|
|
22
|
-
console.log(this.compare);
|
|
23
|
-
}
|
|
24
|
-
this._head = null;
|
|
25
|
-
this._length = 0;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Returns nodes count in the entire tree
|
|
29
|
-
*/
|
|
30
|
-
AbstractBinaryTree.prototype.length = function () {
|
|
31
|
-
return this._length;
|
|
32
|
-
};
|
|
33
|
-
return AbstractBinaryTree;
|
|
34
|
-
}());
|
|
35
|
-
exports.default = AbstractBinaryTree;
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQWJzdHJhY3RCaW5hcnlUcmVlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL2RhdGEtc3RydWN0dXJlcy9CaW5hcnlUcmVlL0Fic3RyYWN0QmluYXJ5VHJlZS9BYnN0cmFjdEJpbmFyeVRyZWUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7QUFLQTs7R0FFRztBQUNIO0lBV0U7Ozs7T0FJRztJQUNILDRCQUFzQixTQUEyQjtRQWZqRDs7Ozs7V0FLRztRQUNPLFlBQU8sR0FBb0IsVUFBQyxDQUFJLEVBQUUsQ0FBSSxJQUFLLE9BQUEsQ0FBQyxHQUFHLENBQUMsRUFBTCxDQUFLLENBQUM7UUFVekQsSUFBSSxTQUFTLEVBQUU7WUFDYixJQUFJLENBQUMsT0FBTyxHQUFHLFNBQVMsQ0FBQztZQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjtRQUNELElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRDs7T0FFRztJQUNJLG1DQUFNLEdBQWI7UUFDRSxPQUFPLElBQUksQ0FBQyxPQUFPLENBQUM7SUFDdEIsQ0FBQztJQXlDSCx5QkFBQztBQUFELENBQUMsQUF2RUQsSUF1RUMifQ==
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
import AbstractBinaryNode from "../AbstractBinaryTree/AbstractBinaryNode";
|
|
2
|
-
export default class BinarySearchNode<T> extends AbstractBinaryNode<T> {
|
|
3
|
-
protected _left: BinarySearchNode<T> | null;
|
|
4
|
-
protected _right: BinarySearchNode<T> | null;
|
|
5
|
-
protected _parent: BinarySearchNode<T> | null;
|
|
6
|
-
constructor(initialData: T);
|
|
7
|
-
get left(): BinarySearchNode<T> | null;
|
|
8
|
-
set left(value: BinarySearchNode<T> | null);
|
|
9
|
-
get right(): BinarySearchNode<T> | null;
|
|
10
|
-
set right(value: BinarySearchNode<T> | null);
|
|
11
|
-
get parent(): BinarySearchNode<T> | null;
|
|
12
|
-
set parent(value: BinarySearchNode<T> | null);
|
|
13
|
-
}
|