@raikuxq/alg-ds 1.1.6 → 1.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (177) hide show
  1. package/lib/algorithms/binary-search.d.ts +5 -0
  2. package/lib/algorithms/binary-search.js +27 -0
  3. package/lib/algorithms/factorial.d.ts +9 -0
  4. package/lib/algorithms/factorial.js +17 -0
  5. package/lib/algorithms/fibonacci.d.ts +9 -0
  6. package/lib/algorithms/fibonacci.js +17 -0
  7. package/lib/algorithms/memoize.d.ts +5 -0
  8. package/lib/algorithms/memoize.js +22 -0
  9. package/lib/algorithms/sorts/bubble-sort.d.ts +9 -0
  10. package/lib/algorithms/sorts/bubble-sort.js +23 -0
  11. package/lib/algorithms/sorts/insertion-sort.d.ts +9 -0
  12. package/lib/algorithms/sorts/insertion-sort.js +25 -0
  13. package/lib/algorithms/sorts/merge-sort.d.ts +9 -0
  14. package/lib/algorithms/sorts/merge-sort.js +61 -0
  15. package/lib/algorithms/sorts/quick-sort.d.ts +9 -0
  16. package/lib/algorithms/sorts/quick-sort.js +45 -0
  17. package/lib/algorithms/sorts/select-sort.d.ts +9 -0
  18. package/lib/algorithms/sorts/select-sort.js +20 -0
  19. package/lib/algorithms/transpose-matrix.d.ts +5 -0
  20. package/lib/algorithms/transpose-matrix.js +18 -0
  21. package/lib/constants.d.ts +2 -0
  22. package/lib/constants.js +6 -0
  23. package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.d.ts +15 -0
  24. package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryNode.js +53 -0
  25. package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.d.ts +60 -0
  26. package/lib/data-structures/BinaryTree/AbstractBinaryTree/AbstractBinaryTree.js +36 -0
  27. package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.d.ts +13 -0
  28. package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchNode.js +59 -0
  29. package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.d.ts +70 -0
  30. package/lib/data-structures/BinaryTree/BinarySearchTree/BinarySearchTree.js +271 -0
  31. package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.d.ts +16 -0
  32. package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchNode.js +70 -0
  33. package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.d.ts +57 -0
  34. package/lib/data-structures/BinaryTree/RandBinarySearchTree/RandBinarySearchTree.js +235 -0
  35. package/lib/data-structures/Graph/AbstractGraph.d.ts +84 -0
  36. package/lib/data-structures/Graph/AbstractGraph.js +143 -0
  37. package/lib/data-structures/Graph/DirectedGraph.d.ts +24 -0
  38. package/lib/data-structures/Graph/DirectedGraph.js +86 -0
  39. package/lib/data-structures/Graph/GraphEdge.d.ts +16 -0
  40. package/lib/data-structures/Graph/GraphEdge.js +43 -0
  41. package/lib/data-structures/Graph/UndirectedGraph.d.ts +28 -0
  42. package/lib/data-structures/Graph/UndirectedGraph.js +103 -0
  43. package/lib/data-structures/Graph/demo/generateRandomGraph.d.ts +4 -0
  44. package/lib/data-structures/Graph/demo/generateRandomGraph.js +66 -0
  45. package/lib/data-structures/Graph/iterator/AbstractGraphIterator.d.ts +35 -0
  46. package/lib/data-structures/Graph/iterator/AbstractGraphIterator.js +90 -0
  47. package/lib/data-structures/Graph/iterator/GraphIteratorBFS.d.ts +28 -0
  48. package/lib/data-structures/Graph/iterator/GraphIteratorBFS.js +70 -0
  49. package/lib/data-structures/Graph/iterator/GraphIteratorDFS.d.ts +28 -0
  50. package/lib/data-structures/Graph/iterator/GraphIteratorDFS.js +70 -0
  51. package/lib/data-structures/Graph/iterator/GraphIteratorDijkstra.d.ts +32 -0
  52. package/lib/data-structures/Graph/iterator/GraphIteratorDijkstra.js +99 -0
  53. package/lib/data-structures/Graph/presenter/presenterAdjacencyLists.d.ts +19 -0
  54. package/lib/data-structures/Graph/presenter/presenterAdjacencyLists.js +28 -0
  55. package/lib/data-structures/Graph/presenter/presenterAdjacencyMatrix.d.ts +32 -0
  56. package/lib/data-structures/Graph/presenter/presenterAdjacencyMatrix.js +48 -0
  57. package/lib/data-structures/Graph/searching/hasPath.d.ts +9 -0
  58. package/lib/data-structures/Graph/searching/hasPath.js +30 -0
  59. package/lib/data-structures/Graph/searching/shortestPath.d.ts +9 -0
  60. package/lib/data-structures/Graph/searching/shortestPath.js +30 -0
  61. package/lib/data-structures/Graph/strategy/BFSIterationStrategy.d.ts +6 -0
  62. package/lib/data-structures/Graph/strategy/BFSIterationStrategy.js +13 -0
  63. package/lib/data-structures/Graph/strategy/DFSIterationStrategy.d.ts +6 -0
  64. package/lib/data-structures/Graph/strategy/DFSIterationStrategy.js +13 -0
  65. package/lib/data-structures/Graph/strategy/DijkstraIterationStrategy.d.ts +6 -0
  66. package/lib/data-structures/Graph/strategy/DijkstraIterationStrategy.js +13 -0
  67. package/lib/data-structures/Graph/transposing/transposeDirectedGraph.d.ts +2 -0
  68. package/lib/data-structures/Graph/transposing/transposeDirectedGraph.js +14 -0
  69. package/lib/data-structures/HashTable/HashTable.d.ts +73 -0
  70. package/lib/data-structures/HashTable/HashTable.js +171 -0
  71. package/lib/data-structures/HashTable/HashTableNode.d.ts +11 -0
  72. package/lib/data-structures/HashTable/HashTableNode.js +39 -0
  73. package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.d.ts +125 -0
  74. package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedList.js +241 -0
  75. package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.d.ts +20 -0
  76. package/lib/data-structures/LinkedList/AbstractLinkedList/AbstractLinkedNode.js +41 -0
  77. package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.d.ts +48 -0
  78. package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedList.js +151 -0
  79. package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.d.ts +25 -0
  80. package/lib/data-structures/LinkedList/DoubleLinkedList/DoubleLinkedNode.js +65 -0
  81. package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.d.ts +52 -0
  82. package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedList.js +138 -0
  83. package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.d.ts +7 -0
  84. package/lib/data-structures/LinkedList/SingleLinkedList/SingleLinkedNode.js +29 -0
  85. package/lib/data-structures/LoopedArray/LoopedArray.d.ts +83 -0
  86. package/lib/data-structures/LoopedArray/LoopedArray.js +169 -0
  87. package/lib/data-structures/Queue/Queue.d.ts +50 -0
  88. package/lib/data-structures/Queue/Queue.js +85 -0
  89. package/lib/data-structures/Stack/Stack.d.ts +50 -0
  90. package/lib/data-structures/Stack/Stack.js +85 -0
  91. package/lib/exceptions/IllegalCapacityException.d.ts +4 -0
  92. package/lib/exceptions/IllegalCapacityException.js +28 -0
  93. package/lib/exceptions/IndexOutOfBoundsException.d.ts +4 -0
  94. package/lib/exceptions/IndexOutOfBoundsException.js +28 -0
  95. package/lib/exceptions/IsAlreadyExistsException.d.ts +4 -0
  96. package/lib/exceptions/IsAlreadyExistsException.js +28 -0
  97. package/lib/exceptions/IsEmptyException.d.ts +4 -0
  98. package/lib/exceptions/IsEmptyException.js +28 -0
  99. package/lib/exceptions/IsFullException.d.ts +4 -0
  100. package/lib/exceptions/IsFullException.js +28 -0
  101. package/lib/exceptions/IsNotFoundException.d.ts +4 -0
  102. package/lib/exceptions/IsNotFoundException.js +28 -0
  103. package/lib/exceptions/base/IllegalArgumentException.d.ts +3 -0
  104. package/lib/exceptions/base/IllegalArgumentException.js +27 -0
  105. package/lib/exceptions/base/IllegalStateException.d.ts +3 -0
  106. package/lib/exceptions/base/IllegalStateException.js +27 -0
  107. package/lib/exports/algorithms.d.ts +16 -0
  108. package/lib/exports/algorithms.js +36 -0
  109. package/lib/exports/constants.d.ts +2 -0
  110. package/lib/exports/constants.js +7 -0
  111. package/lib/exports/data-structures.d.ts +11 -0
  112. package/lib/exports/data-structures.js +24 -0
  113. package/lib/exports/helpers.d.ts +6 -0
  114. package/lib/exports/helpers.js +14 -0
  115. package/lib/exports/sorts.d.ts +6 -0
  116. package/lib/exports/sorts.js +14 -0
  117. package/lib/exports/utils.d.ts +3 -0
  118. package/lib/exports/utils.js +14 -0
  119. package/lib/exports.d.ts +52 -0
  120. package/lib/exports.js +103 -0
  121. package/lib/helpers/createBinaryTree.d.ts +6 -0
  122. package/lib/helpers/createBinaryTree.js +22 -0
  123. package/lib/helpers/createGraph.d.ts +6 -0
  124. package/lib/helpers/createGraph.js +24 -0
  125. package/lib/helpers/createGraphFromMatrix.d.ts +7 -0
  126. package/lib/helpers/createGraphFromMatrix.js +42 -0
  127. package/lib/helpers/createLinkedList.d.ts +3 -0
  128. package/lib/helpers/createLinkedList.js +21 -0
  129. package/lib/index.d.ts +3 -0
  130. package/lib/index.js +6 -0
  131. package/lib/types/ArrayMatrix.d.ts +1 -0
  132. package/lib/types/ArrayMatrix.js +3 -0
  133. package/lib/types/EnumBinarySearchTreeType.d.ts +4 -0
  134. package/lib/types/EnumBinarySearchTreeType.js +9 -0
  135. package/lib/types/EnumGraphType.d.ts +4 -0
  136. package/lib/types/EnumGraphType.js +9 -0
  137. package/lib/types/EnumLinkedListType.d.ts +4 -0
  138. package/lib/types/EnumLinkedListType.js +9 -0
  139. package/lib/types/EnumRandomGenerationFormat.d.ts +4 -0
  140. package/lib/types/EnumRandomGenerationFormat.js +9 -0
  141. package/lib/types/EnumTreeTraversalType.d.ts +5 -0
  142. package/lib/types/EnumTreeTraversalType.js +10 -0
  143. package/lib/types/FnCompareTwo.d.ts +1 -0
  144. package/lib/types/FnCompareTwo.js +3 -0
  145. package/lib/types/FnToMemoize.d.ts +1 -0
  146. package/lib/types/FnToMemoize.js +3 -0
  147. package/lib/types/IArrayFacade.d.ts +4 -0
  148. package/lib/types/IArrayFacade.js +3 -0
  149. package/lib/types/IBiDirectIterable.d.ts +5 -0
  150. package/lib/types/IBiDirectIterable.js +3 -0
  151. package/lib/types/IBiDirectIterator.d.ts +11 -0
  152. package/lib/types/IBiDirectIterator.js +3 -0
  153. package/lib/types/IBinaryTree.d.ts +12 -0
  154. package/lib/types/IBinaryTree.js +3 -0
  155. package/lib/types/IConvertableToArray.d.ts +4 -0
  156. package/lib/types/IConvertableToArray.js +3 -0
  157. package/lib/types/IGraph.d.ts +14 -0
  158. package/lib/types/IGraph.js +3 -0
  159. package/lib/types/IGraphIterationStrategy.d.ts +5 -0
  160. package/lib/types/IGraphIterationStrategy.js +3 -0
  161. package/lib/types/IGraphIterator.d.ts +11 -0
  162. package/lib/types/IGraphIterator.js +3 -0
  163. package/lib/types/IIterable.d.ts +4 -0
  164. package/lib/types/IIterable.js +3 -0
  165. package/lib/types/IIterator.d.ts +14 -0
  166. package/lib/types/IIterator.js +3 -0
  167. package/lib/types/IKeyValueStorage.d.ts +8 -0
  168. package/lib/types/IKeyValueStorage.js +3 -0
  169. package/lib/types/ILinearStorage.d.ts +11 -0
  170. package/lib/types/ILinearStorage.js +3 -0
  171. package/lib/types/ILinearStorageRA.d.ts +13 -0
  172. package/lib/types/ILinearStorageRA.js +3 -0
  173. package/lib/types/ILinkedList.d.ts +4 -0
  174. package/lib/types/ILinkedList.js +3 -0
  175. package/lib/utils.d.ts +33 -0
  176. package/lib/utils.js +108 -0
  177. package/package.json +1 -1
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Find element's index in sorted array
3
+ * Time complexity: O(log(n))
4
+ */
5
+ export declare const binarySearch: (elements: Array<number>, searchElement: number) => number | null;
@@ -0,0 +1,27 @@
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
@@ -0,0 +1,9 @@
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>;
@@ -0,0 +1,17 @@
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==
@@ -0,0 +1,9 @@
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>;
@@ -0,0 +1,17 @@
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
@@ -0,0 +1,5 @@
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>;
@@ -0,0 +1,22 @@
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=
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Bubble sorting algorithm
3
+ *
4
+ * @description
5
+ * Time complexity: Best O(n); Avg O(n \^ 2); Worst O(n \^ 2)
6
+ * @description
7
+ * Memory complexity: Worst case: O(1)
8
+ */
9
+ export declare const bubbleSort: (arr: Array<number>) => Array<number>;
@@ -0,0 +1,23 @@
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=
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Insertion sorting algorithm
3
+ *
4
+ * @description
5
+ * Time complexity: Best O(n); Avg O(n \^ 2); Worst O(n \^ 2);
6
+ * @description
7
+ * Memory complexity: Worst case: O(1)
8
+ */
9
+ export declare const insertionSort: (arr: Array<number>) => Array<number>;
@@ -0,0 +1,25 @@
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=
@@ -0,0 +1,9 @@
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>;
@@ -0,0 +1,61 @@
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=
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Quick sort algorithm
3
+ *
4
+ * @description
5
+ * Time complexity: Best O(n * log(n)); Avg O(n * log(n)); Worst O(n ^2)
6
+ * @description
7
+ * Memory complexity: Worst case: O(1)
8
+ */
9
+ export declare const quickSort: (arr: Array<number>) => Array<number>;
@@ -0,0 +1,45 @@
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=
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Selection sorting algorithm
3
+ *
4
+ * @description
5
+ * Time complexity: Best O(n \^ 2); Avg O(n \^ 2); Worst O(n \^ 2)
6
+ * @description
7
+ * Memory complexity: Worst case: O(1)
8
+ */
9
+ export declare const selectSort: (arr: Array<number>) => Array<number>;
@@ -0,0 +1,20 @@
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=
@@ -0,0 +1,5 @@
1
+ import { ArrayMatrix } from "../types/ArrayMatrix";
2
+ /**
3
+ * Will flips a matrix over its diagonal
4
+ */
5
+ export declare const transposeMatrix: (matrix: ArrayMatrix) => ArrayMatrix;
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.transposeMatrix = void 0;
4
+ var IllegalArgumentException_1 = require("../exceptions/base/IllegalArgumentException");
5
+ var utils_1 = require("../utils");
6
+ /**
7
+ * Will flips a matrix over its diagonal
8
+ */
9
+ exports.transposeMatrix = function (matrix) {
10
+ if (!utils_1.checkIsArrayMatrix(matrix)) {
11
+ throw new IllegalArgumentException_1.default("Given array is not a matrix");
12
+ }
13
+ return matrix.reduce(function (acc, current, currentIndex) {
14
+ acc[currentIndex] = matrix.map(function (rowArr) { return rowArr[currentIndex]; });
15
+ return acc;
16
+ }, new Array(matrix.length));
17
+ };
18
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHJhbnNwb3NlLW1hdHJpeC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hbGdvcml0aG1zL3RyYW5zcG9zZS1tYXRyaXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQ0Esd0ZBQW1GO0FBQ25GLGtDQUE4QztBQUU5Qzs7R0FFRztBQUNVLFFBQUEsZUFBZSxHQUFHLFVBQUMsTUFBbUI7SUFDakQsSUFBSSxDQUFDLDBCQUFrQixDQUFDLE1BQU0sQ0FBQyxFQUFFO1FBQy9CLE1BQU0sSUFBSSxrQ0FBd0IsQ0FBQyw2QkFBNkIsQ0FBQyxDQUFDO0tBQ25FO0lBRUQsT0FBTyxNQUFNLENBQUMsTUFBTSxDQUFDLFVBQUMsR0FBRyxFQUFFLE9BQU8sRUFBRSxZQUFZO1FBQzlDLEdBQUcsQ0FBQyxZQUFZLENBQUMsR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLFVBQUMsTUFBTSxJQUFLLE9BQUEsTUFBTSxDQUFDLFlBQVksQ0FBQyxFQUFwQixDQUFvQixDQUFDLENBQUM7UUFDakUsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQUUsSUFBSSxLQUFLLENBQUMsTUFBTSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7QUFDL0IsQ0FBQyxDQUFDIn0=
@@ -0,0 +1,2 @@
1
+ export declare const EDGE_EXISTS_STATE = 1;
2
+ export declare const EDGE_NOT_EXISTS_STATE = 0;
@@ -0,0 +1,6 @@
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
@@ -0,0 +1,15 @@
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
+ }
@@ -0,0 +1,53 @@
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==
@@ -0,0 +1,60 @@
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
+ }
@@ -0,0 +1,36 @@
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==
@@ -0,0 +1,13 @@
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
+ }
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __extends = (this && this.__extends) || (function () {
3
+ var extendStatics = function (d, b) {
4
+ extendStatics = Object.setPrototypeOf ||
5
+ ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
6
+ function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
7
+ return extendStatics(d, b);
8
+ };
9
+ return function (d, b) {
10
+ extendStatics(d, b);
11
+ function __() { this.constructor = d; }
12
+ d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
13
+ };
14
+ })();
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ var AbstractBinaryNode_1 = require("../AbstractBinaryTree/AbstractBinaryNode");
17
+ var BinarySearchNode = /** @class */ (function (_super) {
18
+ __extends(BinarySearchNode, _super);
19
+ function BinarySearchNode(initialData) {
20
+ var _this = _super.call(this, initialData) || this;
21
+ _this._left = null;
22
+ _this._right = null;
23
+ _this._parent = null;
24
+ return _this;
25
+ }
26
+ Object.defineProperty(BinarySearchNode.prototype, "left", {
27
+ get: function () {
28
+ return this._left;
29
+ },
30
+ set: function (value) {
31
+ this._left = value;
32
+ },
33
+ enumerable: false,
34
+ configurable: true
35
+ });
36
+ Object.defineProperty(BinarySearchNode.prototype, "right", {
37
+ get: function () {
38
+ return this._right;
39
+ },
40
+ set: function (value) {
41
+ this._right = value;
42
+ },
43
+ enumerable: false,
44
+ configurable: true
45
+ });
46
+ Object.defineProperty(BinarySearchNode.prototype, "parent", {
47
+ get: function () {
48
+ return this._parent;
49
+ },
50
+ set: function (value) {
51
+ this._parent = value;
52
+ },
53
+ enumerable: false,
54
+ configurable: true
55
+ });
56
+ return BinarySearchNode;
57
+ }(AbstractBinaryNode_1.default));
58
+ exports.default = BinarySearchNode;
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmluYXJ5U2VhcmNoTm9kZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9kYXRhLXN0cnVjdHVyZXMvQmluYXJ5VHJlZS9CaW5hcnlTZWFyY2hUcmVlL0JpbmFyeVNlYXJjaE5vZGUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsK0VBQTBFO0FBRTFFO0lBQWlELG9DQUFxQjtJQUtwRSwwQkFBbUIsV0FBYztRQUFqQyxZQUNFLGtCQUFNLFdBQVcsQ0FBQyxTQUluQjtRQUhDLEtBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDO1FBQ2xCLEtBQUksQ0FBQyxNQUFNLEdBQUcsSUFBSSxDQUFDO1FBQ25CLEtBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDOztJQUN0QixDQUFDO0lBRUQsc0JBQVcsa0NBQUk7YUFBZjtZQUNFLE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQztRQUNwQixDQUFDO2FBRUQsVUFBZ0IsS0FBaUM7WUFDL0MsSUFBSSxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7UUFDckIsQ0FBQzs7O09BSkE7SUFNRCxzQkFBVyxtQ0FBSzthQUFoQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNyQixDQUFDO2FBRUQsVUFBaUIsS0FBaUM7WUFDaEQsSUFBSSxDQUFDLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDdEIsQ0FBQzs7O09BSkE7SUFNRCxzQkFBVyxvQ0FBTTthQUFqQjtZQUNFLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQztRQUN0QixDQUFDO2FBRUQsVUFBa0IsS0FBaUM7WUFDakQsSUFBSSxDQUFDLE9BQU8sR0FBRyxLQUFLLENBQUM7UUFDdkIsQ0FBQzs7O09BSkE7SUFLSCx1QkFBQztBQUFELENBQUMsQUFuQ0QsQ0FBaUQsNEJBQWtCLEdBbUNsRSJ9