diff --git a/.dccache b/.dccache index a55c494..96666b5 100644 --- a/.dccache +++ b/.dccache @@ -1 +1 @@ -{"c:/algorithm.js/jest.config.js":[590,1654149532580.9902,"85faffa701831f86db01cdc1d579f9c01065fff014030a9c797a09643782057f"],"c:/algorithm.js/dist/index-min-min.js":[627,1654149532539.9922,"b561ffdb4d06aec0f7f4be0f9effcb0d4c8d79f08f5d6c887fa2cf759dac5915"],"c:/algorithm.js/dist/index-min.js":[627,1654149532540.4915,"b561ffdb4d06aec0f7f4be0f9effcb0d4c8d79f08f5d6c887fa2cf759dac5915"],"c:/algorithm.js/dist/index.js":[739,1654176693754.7646,"ef76fb2fb05b1722064df11798f0e08b097ddb89e7e2e0227851fc3bc637faa9"],"c:/algorithm.js/lib/index.ts":[161,1654149532581.4917,"ac8edb0bb0913be5c43393b5046165564d6d531b6499f57dbb4ba16f4f10fa00"],"c:/algorithm.js/dist/utils/algorithm-min.js":[163,1654149532541.99,"6f6d5e5330627810caa290d66b138021ee199d1b9e3b77f30a3a2c40a88d0891"],"c:/algorithm.js/dist/utils/algorithm.js":[240,1654176693734.767,"5b2ae4bb91ddc7f1a060ff05d6a06705bd3b975ff79811e43bd6f07129af79e0"],"c:/algorithm.js/dist/utils/big-o-notation.js":[1683,1654176693751.8037,"fe9eca28982988e8d6b83600be8e21298e4f4777a577a65266b5108d557c5ce4"],"c:/algorithm.js/dist/utils/data-structure.js":[401,1654176693745.2644,"050b289d97357da5e6d901c5f860a0515da82659ce493b63ffae2fb7aeeac853"],"c:/algorithm.js/lib/utils/algorithm.ts":[84,1654149532581.9917,"a7944d06bc8219610085b4d3a8d4496bdfaf64825fb423c4bc5904defa7e6821"],"c:/algorithm.js/lib/utils/big-o-notation.ts":[1438,1654149532589.4902,"c98b4c50bbc22a87c4f9b26f1bc19b185b91904fb1c425d69bdcb94bd144dc9b"],"c:/algorithm.js/lib/utils/data-structure.ts":[299,1654155903578.5498,"63f0ee64d9bb621b7fb67444a8d8a10fdb4a4dc6a4a59618a42c7ebff9213123"],"c:/algorithm.js/tests/data-structures/priority-queue.ts":[39,1654149532602.494,"94e98ee509470a117011fdbff7ec0829112cceab69eab3aae1b4527d20cf05dc"],"c:/algorithm.js/tests/data-structures/queue.test.ts":[30,1654149532602.9934,"7b6e17cba19efe567383d0d34fedeb73f9534e2cd77499c0a995036ce284b298"],"c:/algorithm.js/tests/data-structures/stack.test.ts":[488,1654149532603.5244,"190ba9f3619e2961481475bb11290d77ca75b7530eac8626316055b50ede4fa0"],"c:/algorithm.js/dist/utils/algorithms/binary-search.js":[876,1654176693759.7964,"8e4220ffa27f2ce2df105354d94082e6b8896cdfd42a3714168f1fc1c2adae2a"],"c:/algorithm.js/dist/utils/algorithms/bubble-sort.js":[709,1654176693762.2654,"76ee8a90bd07d273aac202b5f669a09b7e9a7f0d01ebc9582af55199a35046f3"],"c:/algorithm.js/dist/utils/algorithms/bucket-sort.js":[631,1654176693764.7651,"1c247c049976557b93cb6e26a5ddc77af5770694b29e70996e0848f63bd2e540"],"c:/algorithm.js/dist/utils/algorithms/counting-sort.js":[886,1654176693767.2913,"6519a9b6c1b7ec6fca85aeac6cb40a60d6313f3e699fa0fd9a8c913b3f514492"],"c:/algorithm.js/dist/utils/algorithms/cycle-sort.js":[1523,1654176693769.7637,"b6e390f7f354ab8050545a57f1c2e10f0e50b1839d99780aab3029fa5081a409"],"c:/algorithm.js/dist/utils/algorithms/dijstras-algorithm.js":[272,1654176693772.27,"5abcc024b223aa85f70506e2fd8b7c47d87cb75c36b0bef0f10098eaa5272a2e"],"c:/algorithm.js/dist/utils/algorithms/fibonacci.js":[317,1654176693774.2656,"9ae1be2462fbbac88d9edd296ed1c10c252974b6038fd98c84b1baca184a9944"],"c:/algorithm.js/dist/utils/algorithms/fourier-transform.js":[328,1654149532548.9917,"edd6b4bfa3c23ca07e01fc20b742512a7c5beb8accab6602a41187feaf914e9b"],"c:/algorithm.js/dist/utils/algorithms/heap-sort.js":[1145,1654176693776.7651,"5ec53dfcc23630a6607f4ade42895d4609420022290c4106c5f952d55447b212"],"c:/algorithm.js/dist/utils/algorithms/insertion-sort.js":[670,1654176693779.273,"9f17a046b5c4b1fe1a213e95ad718c9d9210e74bc7b5bec2de0083ec36411742"],"c:/algorithm.js/dist/utils/algorithms/linear-search.js":[511,1654176693781.2644,"3bd1f126b1e1dc470ddace0c42336db3a967f4b6bc706e9079ab605fb69ecf24"],"c:/algorithm.js/dist/utils/algorithms/merge-sort.js":[828,1654176693783.7656,"d0e07d94ac686d1245417920a9bb53faa39c4e730a7103a99ed021c33c7a83ec"],"c:/algorithm.js/dist/utils/algorithms/patience-sort.js":[1820,1654176693786.2827,"563ba951e773b17311e14b0c3237b74b5e56cf887edc095b5a8a3405b02e3e47"],"c:/algorithm.js/dist/utils/algorithms/quick-sort.js":[865,1654176693788.775,"815bafd5ad907e6788d45c6e83892cfc71b3c7e8c7fbecc929be5e4e93d9b187"],"c:/algorithm.js/dist/utils/algorithms/radix-sort.js":[759,1654176693795.2642,"5bf79d33c8d28d0c4579000e768518dc376556c1bd66441a3ae962292f49d394"],"c:/algorithm.js/dist/utils/algorithms/recursive-traversal-binary-tree.js":[596,1654149532556.9976,"99e5812219437d571535277bb5ce57e151ca1f57590a5fef25ad740f0568d9a3"],"c:/algorithm.js/dist/utils/algorithms/selection-sort.js":[778,1654176693797.264,"6984012202dbe115e662c11bb163123aabaf6ee10b1d7e937f2d55d777b1153f"],"c:/algorithm.js/dist/utils/algorithms/shell-sort.js":[752,1654176693799.2656,"ecec55afae5d936d6a875fc4b60e01434d81596a1a7220419fa571dbe054deef"],"c:/algorithm.js/dist/utils/data-structures/binary-tree.js":[7675,1654176693740.7646,"9794f0e5bd2a500d73202766f612a4f42827cb1699de4ac1f7bff55ca8709529"],"c:/algorithm.js/dist/utils/data-structures/bloom-filter.js":[55,1654149532562.4915,"47b95440e13f3441f4d37b12bb91e3a57f6e14c137cb2df42356cd019390ee0b"],"c:/algorithm.js/dist/utils/data-structures/circular-buffer.js":[58,1654149532563.4917,"3fd1c051ed226550da0f839c096cee0b2f7256de1d28d16129dcb5eb6f34dc8c"],"c:/algorithm.js/dist/utils/data-structures/double-linked-list.js":[2643,1654176693802.2715,"7318680f38bb802792add1bdaa83d06eafc6e33e7f344ac4151b58eb738979b2"],"c:/algorithm.js/dist/utils/data-structures/graph.js":[3955,1654176693807.2642,"3a45d56ce21c25ae304b9e567941a39ff4344f765485f9104f93fa070a657ca7"],"c:/algorithm.js/dist/utils/data-structures/hash-table.js":[2079,1654176693809.7644,"12b407671164db6d5bb9d5dac69a31deb946d25ebc586b1b52bf69e93ee3f23d"],"c:/algorithm.js/dist/utils/data-structures/heap.js":[3506,1654176693812.765,"a67667215999656bb4fc77936c7c1642abb830755d5fa692585d002e7ffa8973"],"c:/algorithm.js/dist/utils/data-structures/least-recently-used-cache.js":[68,1654149532567.4968,"cd963608702f87172e004a61529259ee680c17413f2a42a6cf3c8f232b0af5c9"],"c:/algorithm.js/dist/utils/data-structures/linked-list.js":[3632,1654176693815.767,"dba1e88930eae8d2fd45e67679962f104bd865bd1658107f63225ceb419024d3"],"c:/algorithm.js/dist/utils/data-structures/most-recently-used-cache.js":[67,1654149532569.4917,"37ec17b08a6afa63cb5cb3d901e38b5d4c88a2bb65a8428cedabb94310c092c9"],"c:/algorithm.js/dist/utils/data-structures/priority-queue.js":[1557,1654176693819.264,"332bc8eaad403c8fb861735c8202eea0781d0a354cdd773ff60996396003a484"],"c:/algorithm.js/dist/utils/data-structures/queue.js":[799,1654176693804.7727,"0808cf68a585fcd8f2e33933a5626fa3c6ffbe41408b4be433f25ecb4c640b28"],"c:/algorithm.js/dist/utils/data-structures/red-black-tree.js":[8103,1654176693822.2654,"08993fb978d9ebce6a38770467dce18a440cec28068712d25ccad81df1a640c5"],"c:/algorithm.js/dist/utils/data-structures/splay-tree.js":[5032,1654176693827.2642,"852a152460f1c70d6aca6fb0cb217b1fce96fa4585e38c3a5fefd0098071291e"],"c:/algorithm.js/dist/utils/data-structures/stack.js":[794,1654176693829.765,"7f53cadeb34cda866a9bd70063dea862d07c725dacaaf16150faacb07397f42f"],"c:/algorithm.js/dist/utils/data-structures/tree.js":[6770,1654149532576.4944,"bc7b4f3f59253672a1e441e6afac830a275986ea9203a403f5b61f124ee5075f"],"c:/algorithm.js/dist/utils/interfaces/algorithm.enum.js":[144,1654176693757.2869,"7abe7ad9ac8739d17bc81c2d377a45c6a37e18d256b450e609aae88ae6baaea5"],"c:/algorithm.js/dist/utils/interfaces/big-o-notation.enum.js":[126,1654176693748.7632,"c902049919b27aed7569049b9b1c0c2ca190875dffca58b9480e556bbbe8d58c"],"c:/algorithm.js/dist/utils/interfaces/data-structure.enum.js":[1021,1654176693737.7683,"baee891f32923d9cb224d75deefed30b159b621b023dca349e275ec85c2616c8"],"c:/algorithm.js/dist/utils/interfaces/types.js":[112,1654176693832.7654,"7dd5e4b372e5b9f87e53ede49d9f5c3709be8cadc1b056a2331388ed8162831d"],"c:/algorithm.js/lib/utils/algorithms/binary-search.ts":[743,1654149532582.4912,"2e0ffa375478c1cbb15c380d703d4d08b46e4bba8c7ce387a48ea1ece151fefe"],"c:/algorithm.js/lib/utils/algorithms/bubble-sort.ts":[585,1654149532582.9927,"6590f39e1a16094f14db1c202719e9d85caf475297bf4bcbf0c881da922c4767"],"c:/algorithm.js/lib/utils/algorithms/bucket-sort.ts":[496,1654149532583.4922,"40911080191b57150c5b6d35b557c70980497701feb09eba9d23b7a8fca6d051"],"c:/algorithm.js/lib/utils/algorithms/counting-sort.ts":[759,1654149532583.9917,"afd9b224c4127ae317f94365ae6153a170876442a953c8ca3d3a8f42da55d013"],"c:/algorithm.js/lib/utils/algorithms/cycle-sort.ts":[1274,1654149532584.493,"906356b9e1d8d15c9f8786f1727523ee81cb1e9de33a7298d27061e4a50b747b"],"c:/algorithm.js/lib/utils/algorithms/dijstras-algorithm.ts":[113,1654149532584.9915,"83869658861383a8a7214bd61eb20b3cb6d40c2c65e49c788468e4a4e3f86949"],"c:/algorithm.js/lib/utils/algorithms/fibonacci.ts":[176,1654149532585.5034,"c1ac7b3de1da0defa230e6f25a5c22c12abdd3ce788454068f0edfc8db032feb"],"c:/algorithm.js/lib/utils/algorithms/heap-sort.ts":[1065,1654149532585.992,"8113a417323e938e94be1b1b8e6b41aaf9beb79c8fe09315c8be62b72419aba0"],"c:/algorithm.js/lib/utils/algorithms/insertion-sort.ts":[559,1654149532585.992,"7be181a3d4056822614d5e0443264e7a1b78fc1432116cf3103b6cf92a6b53b2"],"c:/algorithm.js/lib/utils/algorithms/linear-search.ts":[393,1654149532586.4917,"24ce295a3610d0046b5291b88b7f9d549c1a4f4006edf05110548c855f128bb0"],"c:/algorithm.js/lib/utils/algorithms/merge-sort.ts":[792,1654149532586.992,"296b01be84b0a9e13555904dfc0a5343cf806a50a02af23c7a4f02a2932fa8bd"],"c:/algorithm.js/lib/utils/algorithms/patience-sort.ts":[1473,1654149532587.492,"3a33006cb18be8a99e3b5e741d68e89a8dd7ab15beaac74ca728ce712e11385a"],"c:/algorithm.js/lib/utils/algorithms/quick-sort.ts":[722,1654149532587.492,"2d7dfcfcbfb4df5ef83b602010fb9b4f25cb590324fb4714a7a38b8effffa203"],"c:/algorithm.js/lib/utils/algorithms/radix-sort.ts":[661,1654149532587.9915,"ea3aa12d99d570f0b220429a77d0be628a91956ea59b37b6f5a63763c42512dd"],"c:/algorithm.js/lib/utils/algorithms/selection-sort.ts":[645,1654149532588.4915,"84c10617d1fa8d836be1da2efa19a0b1d3bec4b0f0e3519dc4dbbff9e2fbed67"],"c:/algorithm.js/lib/utils/algorithms/shell-sort.ts":[635,1654149532588.9922,"fa9c93e2d38a44d5bc30244a9682fbbba0c1f958e7c896b2519dfa693714cff4"],"c:/algorithm.js/lib/utils/data-structures/binary-tree.ts":[6837,1654175002055.8647,"a96f49a2426e6f32c700ef92277a72ce5b00618e5b1a74c9f6615c222a2d2bb5"],"c:/algorithm.js/lib/utils/data-structures/double-linked-list.ts":[2497,1654149532591.492,"db8318568eed38e2d00c66b4a7d3ef5b2e3334947c95d8bcce936a587c2b0baf"],"c:/algorithm.js/lib/utils/data-structures/graph.ts":[3850,1654149532592.4905,"d2fc4f30b259de0a4342c2e2eb9be16f0d9782f17f3e0a3c781523b86e46de8a"],"c:/algorithm.js/lib/utils/data-structures/hash-table.ts":[2047,1654149532593.495,"f68bc1d5bbfcca73855f50d6908ff666a5919b20773c5b9ca547704b42d6ddcc"],"c:/algorithm.js/lib/utils/data-structures/heap.ts":[3134,1654176194147.8662,"f6dbae0de911f8066535e03dcc558d6e93594c758b42d3dd8ff2315dbcb71a75"],"c:/algorithm.js/lib/utils/data-structures/linked-list.ts":[3125,1654149532594.4912,"921b3c521cc47dba559b73353dd3ba749fe1d028694d360d4b471d2932fad98a"],"c:/algorithm.js/lib/utils/data-structures/priority-queue.ts":[1544,1654149532594.9924,"ae63872b8bd2a7b7edd54c9c9c413011f94b59bb0d1cfd756196069a97379b93"],"c:/algorithm.js/lib/utils/data-structures/queue.ts":[760,1654149532595.491,"3ba5df477eb8bbd1157ebade6b2c932f7ac2446b2daacf780f930a728269b32c"],"c:/algorithm.js/lib/utils/data-structures/red-black-tree.ts":[7213,1654175927707.956,"5ee2ca35b98e95acfbec09594ed9be8140410161125a1cc586469fe31dd0c3c2"],"c:/algorithm.js/lib/utils/data-structures/splay-tree.ts":[3764,1654176768203.7434,"74dcfe8424a2c04c3e09b30336d5e9e836e6c90cc9214d818490c5856102d545"],"c:/algorithm.js/lib/utils/data-structures/stack.ts":[852,1654149532596.9912,"711ac9318186ba11c7c16788431d97e565e7034858324a887b2f58d903fe3dad"],"c:/algorithm.js/lib/utils/interfaces/algorithm.enum.ts":[593,1654149532597.491,"59f28da7e32c5a183090503da35fcf7cd53371f1ac8326bfe97c874bfe5c3ac0"],"c:/algorithm.js/lib/utils/interfaces/big-o-notation.enum.ts":[194,1654149532597.9912,"795c430654ce5aa3493bf8e2bc7e3d3c6f10e04ebc433c62d6fe0a20131e3978"],"c:/algorithm.js/lib/utils/interfaces/data-structure.enum.ts":[1591,1654155956369.8374,"63c6bc014a738b637c7da23859bc6d110efa0dab127ac5494ddcb6583aec215c"],"c:/algorithm.js/lib/utils/interfaces/types.ts":[555,1654149532598.9941,"458ed752dd164dabdd792f137c2d3a2bd0de8fe0bd61303b3157ee082630250e"],"c:\\algorithm.js\\jest.config.js":[590,1654149532580.9902,"85faffa701831f86db01cdc1d579f9c01065fff014030a9c797a09643782057f"],"c:\\algorithm.js\\dist\\index-min-min.js":[627,1654149532539.9922,"b561ffdb4d06aec0f7f4be0f9effcb0d4c8d79f08f5d6c887fa2cf759dac5915"],"c:\\algorithm.js\\dist\\index-min.js":[627,1654149532540.4915,"b561ffdb4d06aec0f7f4be0f9effcb0d4c8d79f08f5d6c887fa2cf759dac5915"],"c:\\algorithm.js\\dist\\index.js":[739,1654176693754.7646,"ef76fb2fb05b1722064df11798f0e08b097ddb89e7e2e0227851fc3bc637faa9"],"c:\\algorithm.js\\dist\\utils\\algorithm-min.js":[163,1654149532541.99,"6f6d5e5330627810caa290d66b138021ee199d1b9e3b77f30a3a2c40a88d0891"],"c:\\algorithm.js\\lib\\index.ts":[161,1654149532581.4917,"ac8edb0bb0913be5c43393b5046165564d6d531b6499f57dbb4ba16f4f10fa00"],"c:\\algorithm.js\\dist\\utils\\algorithm.js":[240,1654176693734.767,"5b2ae4bb91ddc7f1a060ff05d6a06705bd3b975ff79811e43bd6f07129af79e0"],"c:\\algorithm.js\\dist\\utils\\data-structure.js":[401,1654176693745.2644,"050b289d97357da5e6d901c5f860a0515da82659ce493b63ffae2fb7aeeac853"],"c:\\algorithm.js\\dist\\utils\\big-o-notation.js":[1683,1654176693751.8037,"fe9eca28982988e8d6b83600be8e21298e4f4777a577a65266b5108d557c5ce4"],"c:\\algorithm.js\\lib\\utils\\algorithm.ts":[2213,1654672051539.2656,"0d79e8eb6d7d76a9bd208c510eb84d1516163a801e7383f1b822d3b3ffbe69ea"],"c:\\algorithm.js\\lib\\utils\\big-o-notation.ts":[1874,1654672912964.388,"8cbd287785e1af4d537ba9549aa1a79342a1787c3899c0e56cf1640e1d5c2e3d"],"c:\\algorithm.js\\lib\\utils\\data-structure.ts":[1550,1654671386224.2688,"c72263ba8cccd2ecdba034a1ce77a735033ed21a06e4a9cef502db46b2b05d53"],"c:\\algorithm.js\\tests\\data-structures\\priority-queue.ts":[39,1654149532602.494,"94e98ee509470a117011fdbff7ec0829112cceab69eab3aae1b4527d20cf05dc"],"c:\\algorithm.js\\tests\\data-structures\\stack.test.ts":[488,1654149532603.5244,"190ba9f3619e2961481475bb11290d77ca75b7530eac8626316055b50ede4fa0"],"c:\\algorithm.js\\dist\\utils\\algorithms\\binary-search.js":[876,1654176693759.7964,"8e4220ffa27f2ce2df105354d94082e6b8896cdfd42a3714168f1fc1c2adae2a"],"c:\\algorithm.js\\tests\\data-structures\\queue.test.ts":[30,1654149532602.9934,"7b6e17cba19efe567383d0d34fedeb73f9534e2cd77499c0a995036ce284b298"],"c:\\algorithm.js\\dist\\utils\\algorithms\\bucket-sort.js":[631,1654176693764.7651,"1c247c049976557b93cb6e26a5ddc77af5770694b29e70996e0848f63bd2e540"],"c:\\algorithm.js\\dist\\utils\\algorithms\\bubble-sort.js":[709,1654176693762.2654,"76ee8a90bd07d273aac202b5f669a09b7e9a7f0d01ebc9582af55199a35046f3"],"c:\\algorithm.js\\dist\\utils\\algorithms\\counting-sort.js":[886,1654176693767.2913,"6519a9b6c1b7ec6fca85aeac6cb40a60d6313f3e699fa0fd9a8c913b3f514492"],"c:\\algorithm.js\\dist\\utils\\algorithms\\cycle-sort.js":[1523,1654176693769.7637,"b6e390f7f354ab8050545a57f1c2e10f0e50b1839d99780aab3029fa5081a409"],"c:\\algorithm.js\\dist\\utils\\algorithms\\dijstras-algorithm.js":[272,1654176693772.27,"5abcc024b223aa85f70506e2fd8b7c47d87cb75c36b0bef0f10098eaa5272a2e"],"c:\\algorithm.js\\dist\\utils\\algorithms\\fourier-transform.js":[328,1654149532548.9917,"edd6b4bfa3c23ca07e01fc20b742512a7c5beb8accab6602a41187feaf914e9b"],"c:\\algorithm.js\\dist\\utils\\algorithms\\fibonacci.js":[317,1654176693774.2656,"9ae1be2462fbbac88d9edd296ed1c10c252974b6038fd98c84b1baca184a9944"],"c:\\algorithm.js\\dist\\utils\\algorithms\\heap-sort.js":[1145,1654176693776.7651,"5ec53dfcc23630a6607f4ade42895d4609420022290c4106c5f952d55447b212"],"c:\\algorithm.js\\dist\\utils\\algorithms\\insertion-sort.js":[670,1654176693779.273,"9f17a046b5c4b1fe1a213e95ad718c9d9210e74bc7b5bec2de0083ec36411742"],"c:\\algorithm.js\\dist\\utils\\algorithms\\linear-search.js":[511,1654176693781.2644,"3bd1f126b1e1dc470ddace0c42336db3a967f4b6bc706e9079ab605fb69ecf24"],"c:\\algorithm.js\\dist\\utils\\algorithms\\merge-sort.js":[828,1654176693783.7656,"d0e07d94ac686d1245417920a9bb53faa39c4e730a7103a99ed021c33c7a83ec"],"c:\\algorithm.js\\dist\\utils\\algorithms\\quick-sort.js":[865,1654176693788.775,"815bafd5ad907e6788d45c6e83892cfc71b3c7e8c7fbecc929be5e4e93d9b187"],"c:\\algorithm.js\\dist\\utils\\algorithms\\patience-sort.js":[1820,1654176693786.2827,"563ba951e773b17311e14b0c3237b74b5e56cf887edc095b5a8a3405b02e3e47"],"c:\\algorithm.js\\dist\\utils\\algorithms\\radix-sort.js":[759,1654176693795.2642,"5bf79d33c8d28d0c4579000e768518dc376556c1bd66441a3ae962292f49d394"],"c:\\algorithm.js\\dist\\utils\\algorithms\\selection-sort.js":[778,1654176693797.264,"6984012202dbe115e662c11bb163123aabaf6ee10b1d7e937f2d55d777b1153f"],"c:\\algorithm.js\\dist\\utils\\algorithms\\recursive-traversal-binary-tree.js":[596,1654149532556.9976,"99e5812219437d571535277bb5ce57e151ca1f57590a5fef25ad740f0568d9a3"],"c:\\algorithm.js\\dist\\utils\\data-structures\\binary-tree.js":[7675,1654176693740.7646,"9794f0e5bd2a500d73202766f612a4f42827cb1699de4ac1f7bff55ca8709529"],"c:\\algorithm.js\\dist\\utils\\algorithms\\shell-sort.js":[752,1654176693799.2656,"ecec55afae5d936d6a875fc4b60e01434d81596a1a7220419fa571dbe054deef"],"c:\\algorithm.js\\dist\\utils\\data-structures\\bloom-filter.js":[55,1654149532562.4915,"47b95440e13f3441f4d37b12bb91e3a57f6e14c137cb2df42356cd019390ee0b"],"c:\\algorithm.js\\dist\\utils\\data-structures\\double-linked-list.js":[2643,1654176693802.2715,"7318680f38bb802792add1bdaa83d06eafc6e33e7f344ac4151b58eb738979b2"],"c:\\algorithm.js\\dist\\utils\\data-structures\\circular-buffer.js":[58,1654149532563.4917,"3fd1c051ed226550da0f839c096cee0b2f7256de1d28d16129dcb5eb6f34dc8c"],"c:\\algorithm.js\\dist\\utils\\data-structures\\graph.js":[3955,1654176693807.2642,"3a45d56ce21c25ae304b9e567941a39ff4344f765485f9104f93fa070a657ca7"],"c:\\algorithm.js\\dist\\utils\\data-structures\\hash-table.js":[2079,1654176693809.7644,"12b407671164db6d5bb9d5dac69a31deb946d25ebc586b1b52bf69e93ee3f23d"],"c:\\algorithm.js\\dist\\utils\\data-structures\\heap.js":[3506,1654176693812.765,"a67667215999656bb4fc77936c7c1642abb830755d5fa692585d002e7ffa8973"],"c:\\algorithm.js\\dist\\utils\\data-structures\\least-recently-used-cache.js":[68,1654149532567.4968,"cd963608702f87172e004a61529259ee680c17413f2a42a6cf3c8f232b0af5c9"],"c:\\algorithm.js\\dist\\utils\\data-structures\\linked-list.js":[3632,1654176693815.767,"dba1e88930eae8d2fd45e67679962f104bd865bd1658107f63225ceb419024d3"],"c:\\algorithm.js\\dist\\utils\\data-structures\\priority-queue.js":[1557,1654176693819.264,"332bc8eaad403c8fb861735c8202eea0781d0a354cdd773ff60996396003a484"],"c:\\algorithm.js\\dist\\utils\\data-structures\\queue.js":[799,1654176693804.7727,"0808cf68a585fcd8f2e33933a5626fa3c6ffbe41408b4be433f25ecb4c640b28"],"c:\\algorithm.js\\dist\\utils\\data-structures\\most-recently-used-cache.js":[67,1654149532569.4917,"37ec17b08a6afa63cb5cb3d901e38b5d4c88a2bb65a8428cedabb94310c092c9"],"c:\\algorithm.js\\dist\\utils\\data-structures\\red-black-tree.js":[8103,1654176693822.2654,"08993fb978d9ebce6a38770467dce18a440cec28068712d25ccad81df1a640c5"],"c:\\algorithm.js\\dist\\utils\\data-structures\\splay-tree.js":[5032,1654176693827.2642,"852a152460f1c70d6aca6fb0cb217b1fce96fa4585e38c3a5fefd0098071291e"],"c:\\algorithm.js\\dist\\utils\\interfaces\\big-o-notation.enum.js":[126,1654176693748.7632,"c902049919b27aed7569049b9b1c0c2ca190875dffca58b9480e556bbbe8d58c"],"c:\\algorithm.js\\dist\\utils\\data-structures\\stack.js":[794,1654176693829.765,"7f53cadeb34cda866a9bd70063dea862d07c725dacaaf16150faacb07397f42f"],"c:\\algorithm.js\\dist\\utils\\interfaces\\algorithm.enum.js":[144,1654176693757.2869,"7abe7ad9ac8739d17bc81c2d377a45c6a37e18d256b450e609aae88ae6baaea5"],"c:\\algorithm.js\\dist\\utils\\data-structures\\tree.js":[6770,1654149532576.4944,"bc7b4f3f59253672a1e441e6afac830a275986ea9203a403f5b61f124ee5075f"],"c:\\algorithm.js\\dist\\utils\\interfaces\\data-structure.enum.js":[1021,1654176693737.7683,"baee891f32923d9cb224d75deefed30b159b621b023dca349e275ec85c2616c8"],"c:\\algorithm.js\\lib\\utils\\algorithms\\binary-search.ts":[743,1654149532582.4912,"2e0ffa375478c1cbb15c380d703d4d08b46e4bba8c7ce387a48ea1ece151fefe"],"c:\\algorithm.js\\dist\\utils\\interfaces\\types.js":[112,1654176693832.7654,"7dd5e4b372e5b9f87e53ede49d9f5c3709be8cadc1b056a2331388ed8162831d"],"c:\\algorithm.js\\lib\\utils\\algorithms\\bubble-sort.ts":[585,1654149532582.9927,"6590f39e1a16094f14db1c202719e9d85caf475297bf4bcbf0c881da922c4767"],"c:\\algorithm.js\\lib\\utils\\algorithms\\bucket-sort.ts":[496,1654149532583.4922,"40911080191b57150c5b6d35b557c70980497701feb09eba9d23b7a8fca6d051"],"c:\\algorithm.js\\lib\\utils\\algorithms\\counting-sort.ts":[759,1654149532583.9917,"afd9b224c4127ae317f94365ae6153a170876442a953c8ca3d3a8f42da55d013"],"c:\\algorithm.js\\lib\\utils\\algorithms\\cycle-sort.ts":[1274,1654149532584.493,"906356b9e1d8d15c9f8786f1727523ee81cb1e9de33a7298d27061e4a50b747b"],"c:\\algorithm.js\\lib\\utils\\algorithms\\dijstras-algorithm.ts":[113,1654149532584.9915,"83869658861383a8a7214bd61eb20b3cb6d40c2c65e49c788468e4a4e3f86949"],"c:\\algorithm.js\\lib\\utils\\algorithms\\fibonacci.ts":[176,1654149532585.5034,"c1ac7b3de1da0defa230e6f25a5c22c12abdd3ce788454068f0edfc8db032feb"],"c:\\algorithm.js\\lib\\utils\\algorithms\\heap-sort.ts":[1065,1654149532585.992,"8113a417323e938e94be1b1b8e6b41aaf9beb79c8fe09315c8be62b72419aba0"],"c:\\algorithm.js\\lib\\utils\\algorithms\\merge-sort.ts":[792,1654149532586.992,"296b01be84b0a9e13555904dfc0a5343cf806a50a02af23c7a4f02a2932fa8bd"],"c:\\algorithm.js\\lib\\utils\\algorithms\\linear-search.ts":[393,1654149532586.4917,"24ce295a3610d0046b5291b88b7f9d549c1a4f4006edf05110548c855f128bb0"],"c:\\algorithm.js\\lib\\utils\\algorithms\\insertion-sort.ts":[559,1654149532585.992,"7be181a3d4056822614d5e0443264e7a1b78fc1432116cf3103b6cf92a6b53b2"],"c:\\algorithm.js\\lib\\utils\\algorithms\\patience-sort.ts":[1473,1654149532587.492,"3a33006cb18be8a99e3b5e741d68e89a8dd7ab15beaac74ca728ce712e11385a"],"c:\\algorithm.js\\lib\\utils\\algorithms\\quick-sort.ts":[722,1654149532587.492,"2d7dfcfcbfb4df5ef83b602010fb9b4f25cb590324fb4714a7a38b8effffa203"],"c:\\algorithm.js\\lib\\utils\\algorithms\\radix-sort.ts":[661,1654149532587.9915,"ea3aa12d99d570f0b220429a77d0be628a91956ea59b37b6f5a63763c42512dd"],"c:\\algorithm.js\\lib\\utils\\algorithms\\selection-sort.ts":[645,1654149532588.4915,"84c10617d1fa8d836be1da2efa19a0b1d3bec4b0f0e3519dc4dbbff9e2fbed67"],"c:\\algorithm.js\\lib\\utils\\algorithms\\shell-sort.ts":[635,1654149532588.9922,"fa9c93e2d38a44d5bc30244a9682fbbba0c1f958e7c896b2519dfa693714cff4"],"c:\\algorithm.js\\lib\\utils\\data-structures\\binary-tree.ts":[6837,1654175002055.8647,"a96f49a2426e6f32c700ef92277a72ce5b00618e5b1a74c9f6615c222a2d2bb5"],"c:\\algorithm.js\\lib\\utils\\data-structures\\hash-table.ts":[2047,1654149532593.495,"f68bc1d5bbfcca73855f50d6908ff666a5919b20773c5b9ca547704b42d6ddcc"],"c:\\algorithm.js\\lib\\utils\\data-structures\\double-linked-list.ts":[2497,1654149532591.492,"db8318568eed38e2d00c66b4a7d3ef5b2e3334947c95d8bcce936a587c2b0baf"],"c:\\algorithm.js\\lib\\utils\\data-structures\\graph.ts":[3850,1654149532592.4905,"d2fc4f30b259de0a4342c2e2eb9be16f0d9782f17f3e0a3c781523b86e46de8a"],"c:\\algorithm.js\\lib\\utils\\data-structures\\linked-list.ts":[3125,1654149532594.4912,"921b3c521cc47dba559b73353dd3ba749fe1d028694d360d4b471d2932fad98a"],"c:\\algorithm.js\\lib\\utils\\data-structures\\heap.ts":[3134,1654176194147.8662,"f6dbae0de911f8066535e03dcc558d6e93594c758b42d3dd8ff2315dbcb71a75"],"c:\\algorithm.js\\lib\\utils\\data-structures\\queue.ts":[760,1654149532595.491,"3ba5df477eb8bbd1157ebade6b2c932f7ac2446b2daacf780f930a728269b32c"],"c:\\algorithm.js\\lib\\utils\\data-structures\\priority-queue.ts":[1544,1654149532594.9924,"ae63872b8bd2a7b7edd54c9c9c413011f94b59bb0d1cfd756196069a97379b93"],"c:\\algorithm.js\\lib\\utils\\data-structures\\red-black-tree.ts":[7213,1654175927707.956,"5ee2ca35b98e95acfbec09594ed9be8140410161125a1cc586469fe31dd0c3c2"],"c:\\algorithm.js\\lib\\utils\\data-structures\\stack.ts":[852,1654149532596.9912,"711ac9318186ba11c7c16788431d97e565e7034858324a887b2f58d903fe3dad"],"c:\\algorithm.js\\lib\\utils\\data-structures\\splay-tree.ts":[3802,1654670502497.3572,"bc0e499f8c15949115af69f23087c4286841db4d2b7c3b57211e70c72223621c"],"c:\\algorithm.js\\lib\\utils\\interfaces\\algorithm.enum.ts":[208,1654672930687.0972,"1d38dcd2077445832eec8f781209ff9d22697f0bbcb03f48356c682524dceace"],"c:\\algorithm.js\\lib\\utils\\interfaces\\big-o-notation.enum.ts":[194,1654149532597.9912,"795c430654ce5aa3493bf8e2bc7e3d3c6f10e04ebc433c62d6fe0a20131e3978"],"c:\\algorithm.js\\lib\\utils\\interfaces\\types.ts":[555,1654149532598.9941,"458ed752dd164dabdd792f137c2d3a2bd0de8fe0bd61303b3157ee082630250e"],"c:\\algorithm.js\\lib\\utils\\interfaces\\data-structure.enum.ts":[1591,1654155956369.8374,"63c6bc014a738b637c7da23859bc6d110efa0dab127ac5494ddcb6583aec215c"],"c:\\algorithm.js\\lib\\utils\\big-o-notation\\factorial-time.ts":[270,1654672385027.7227,"d2ee32ef84491b6a7f6637fe42cb54741ab0cbe5c9828b86793a19c7c3001a45"],"c:\\algorithm.js\\lib\\utils\\big-o-notation\\linear-time.ts":[121,1654672419115.9353,"bf9090879f183f70d381be986ea5e4dbd321ddf81ffcf8082e50f8000b49d7e3"],"c:\\algorithm.js\\lib\\utils\\big-o-notation\\quadratic-time.ts":[152,1654672474813.718,"95e16d67cc7d3eae9c3c03c45b217ff163267140ae9890fadd5762ecbcdd290f"],"c:\\algorithm.js\\lib\\utils\\big-o-notation\\exponential-time.ts":[156,1654672547810.995,"913ac7f12e2cf9059a768f98c56a5d805390de0061c941088fc2228959dff6fa"],"c:\\algorithm.js\\lib\\utils\\big-o-notation\\logarithmic-time.ts":[161,1654672603568.0632,"4ac787531d1ac58de150313805a0fde1ccdf318f713778e578125c7bcbac5d32"],"c:\\algorithm.js\\lib\\utils\\big-o-notation\\linearithmic-time.ts":[170,1654672648517.3623,"f8092ca63678500946edce8f1d87dd2cccd509af5b3456fec2344e9c1506799f"]} \ No newline at end of file +{"c:/algorithm.js/jest.config.js":[590,1654149532580.9902,"85faffa701831f86db01cdc1d579f9c01065fff014030a9c797a09643782057f"],"c:/algorithm.js/dist/index-min-min.js":[627,1654149532539.9922,"b561ffdb4d06aec0f7f4be0f9effcb0d4c8d79f08f5d6c887fa2cf759dac5915"],"c:/algorithm.js/dist/index-min.js":[627,1654149532540.4915,"b561ffdb4d06aec0f7f4be0f9effcb0d4c8d79f08f5d6c887fa2cf759dac5915"],"c:/algorithm.js/dist/index.js":[739,1654705576635.5332,"ef76fb2fb05b1722064df11798f0e08b097ddb89e7e2e0227851fc3bc637faa9"],"c:/algorithm.js/lib/index.ts":[161,1654705257419.7764,"ac8edb0bb0913be5c43393b5046165564d6d531b6499f57dbb4ba16f4f10fa00"],"c:/algorithm.js/dist/utils/algorithm-min.js":[163,1654149532541.99,"6f6d5e5330627810caa290d66b138021ee199d1b9e3b77f30a3a2c40a88d0891"],"c:/algorithm.js/dist/utils/algorithm.js":[2444,1654705576595.5317,"6bb25e99adf0e1bf04286de2ce131bba773705492d89847d1f3f539349a31642"],"c:/algorithm.js/dist/utils/big-o-notation.js":[1990,1654705576567.037,"9f2cae5e6b3b0ac80411c8c4611c1b0d86bfd49db241d50ebd7634dfc1c7e97f"],"c:/algorithm.js/dist/utils/data-structure.js":[1694,1654705576632.5332,"9c29a9c565dc62cb75405c3abd8e0a2fdfef31a657f1ae8f757d8c19e989b14c"],"c:/algorithm.js/lib/utils/algorithm.ts":[2213,1654672051539.2656,"0d79e8eb6d7d76a9bd208c510eb84d1516163a801e7383f1b822d3b3ffbe69ea"],"c:/algorithm.js/lib/utils/big-o-notation.ts":[1804,1654672918760.2534,"04f1e442a2752aeb3724242932a7b3e351ef9d881ccf4fa4432e269ed18eb818"],"c:/algorithm.js/lib/utils/data-structure.ts":[1479,1654672960359.0442,"699ca26111fd5d1c9e54ffcc909bceca66a9fc946a393af450dc702fc59d6777"],"c:/algorithm.js/tests/data-structures/priority-queue.ts":[39,1654149532602.494,"94e98ee509470a117011fdbff7ec0829112cceab69eab3aae1b4527d20cf05dc"],"c:/algorithm.js/tests/data-structures/queue.test.ts":[30,1654149532602.9934,"7b6e17cba19efe567383d0d34fedeb73f9534e2cd77499c0a995036ce284b298"],"c:/algorithm.js/tests/data-structures/stack.test.ts":[488,1654149532603.5244,"190ba9f3619e2961481475bb11290d77ca75b7530eac8626316055b50ede4fa0"],"c:/algorithm.js/dist/utils/algorithms/binary-search.js":[876,1654705576527.0356,"8e4220ffa27f2ce2df105354d94082e6b8896cdfd42a3714168f1fc1c2adae2a"],"c:/algorithm.js/dist/utils/algorithms/bubble-sort.js":[709,1654705576530.0352,"76ee8a90bd07d273aac202b5f669a09b7e9a7f0d01ebc9582af55199a35046f3"],"c:/algorithm.js/dist/utils/algorithms/bucket-sort.js":[631,1654705576533.0378,"1c247c049976557b93cb6e26a5ddc77af5770694b29e70996e0848f63bd2e540"],"c:/algorithm.js/dist/utils/algorithms/counting-sort.js":[886,1654705576535.5632,"6519a9b6c1b7ec6fca85aeac6cb40a60d6313f3e699fa0fd9a8c913b3f514492"],"c:/algorithm.js/dist/utils/algorithms/cycle-sort.js":[1523,1654705576538.5332,"b6e390f7f354ab8050545a57f1c2e10f0e50b1839d99780aab3029fa5081a409"],"c:/algorithm.js/dist/utils/algorithms/dijstras-algorithm.js":[272,1654705576541.062,"5abcc024b223aa85f70506e2fd8b7c47d87cb75c36b0bef0f10098eaa5272a2e"],"c:/algorithm.js/dist/utils/algorithms/fibonacci.js":[317,1654705576544.5415,"9ae1be2462fbbac88d9edd296ed1c10c252974b6038fd98c84b1baca184a9944"],"c:/algorithm.js/dist/utils/algorithms/fourier-transform.js":[328,1654149532548.9917,"edd6b4bfa3c23ca07e01fc20b742512a7c5beb8accab6602a41187feaf914e9b"],"c:/algorithm.js/dist/utils/algorithms/heap-sort.js":[1145,1654705576570.0364,"5ec53dfcc23630a6607f4ade42895d4609420022290c4106c5f952d55447b212"],"c:/algorithm.js/dist/utils/algorithms/insertion-sort.js":[670,1654705576573.0374,"9f17a046b5c4b1fe1a213e95ad718c9d9210e74bc7b5bec2de0083ec36411742"],"c:/algorithm.js/dist/utils/algorithms/linear-search.js":[511,1654705576575.5354,"3bd1f126b1e1dc470ddace0c42336db3a967f4b6bc706e9079ab605fb69ecf24"],"c:/algorithm.js/dist/utils/algorithms/merge-sort.js":[828,1654705576578.5361,"d0e07d94ac686d1245417920a9bb53faa39c4e730a7103a99ed021c33c7a83ec"],"c:/algorithm.js/dist/utils/algorithms/patience-sort.js":[1820,1654705576581.0376,"563ba951e773b17311e14b0c3237b74b5e56cf887edc095b5a8a3405b02e3e47"],"c:/algorithm.js/dist/utils/algorithms/quick-sort.js":[865,1654705576584.0374,"815bafd5ad907e6788d45c6e83892cfc71b3c7e8c7fbecc929be5e4e93d9b187"],"c:/algorithm.js/dist/utils/algorithms/radix-sort.js":[759,1654705576586.5679,"5bf79d33c8d28d0c4579000e768518dc376556c1bd66441a3ae962292f49d394"],"c:/algorithm.js/dist/utils/algorithms/recursive-traversal-binary-tree.js":[596,1654149532556.9976,"99e5812219437d571535277bb5ce57e151ca1f57590a5fef25ad740f0568d9a3"],"c:/algorithm.js/dist/utils/algorithms/selection-sort.js":[778,1654705576589.5388,"6984012202dbe115e662c11bb163123aabaf6ee10b1d7e937f2d55d777b1153f"],"c:/algorithm.js/dist/utils/algorithms/shell-sort.js":[752,1654705576593.0447,"ecec55afae5d936d6a875fc4b60e01434d81596a1a7220419fa571dbe054deef"],"c:/algorithm.js/dist/utils/big-o-notation/double-logarithmic-time.js":[352,1654705576547.0369,"89f59ef8d56f32b6ac04d4cfc0cc2c340f1e83ec959a53ace39ca9c971cdbaf2"],"c:/algorithm.js/dist/utils/big-o-notation/exponential-time.js":[306,1654705576550.0386,"af0ca8738a3d6fa98dc82ee1c8a33e6c11ce30572cd64a820a9d4908ddf92d5d"],"c:/algorithm.js/dist/utils/big-o-notation/factorial-time.js":[391,1654705576552.5347,"0483c7a1ae0f43419165f440b5126dc2449d4cdefbfe3f942d89384d827be9fa"],"c:/algorithm.js/dist/utils/big-o-notation/linear-time.js":[276,1654705576555.5364,"17385ea34d118eb671c6418a067449529201cf476f70b7fb15d4f2029702ad1f"],"c:/algorithm.js/dist/utils/big-o-notation/linearithmic-time.js":[323,1654705576558.5366,"3ca725c859cb2b74efef29109aa310e8de9f135660a6e287f2671f558a47e9e9"],"c:/algorithm.js/dist/utils/big-o-notation/logarithmic-time.js":[311,1654705576561.535,"6537d283dc912ea6cb2428e2b58970d0ee81c6c8033a67a19fc938c15285ca8d"],"c:/algorithm.js/dist/utils/big-o-notation/quadratic-time.js":[296,1654705576564.0327,"b6d0e0a7fcbe940629eb2f481f7eff4c63d6400c989b44dc0a93bd31cd775b7d"],"c:/algorithm.js/dist/utils/interfaces/algorithm.enum.js":[144,1654705576524.0427,"7abe7ad9ac8739d17bc81c2d377a45c6a37e18d256b450e609aae88ae6baaea5"],"c:/algorithm.js/dist/utils/interfaces/big-o-notation.enum.js":[126,1654176693748.7632,"c902049919b27aed7569049b9b1c0c2ca190875dffca58b9480e556bbbe8d58c"],"c:/algorithm.js/dist/utils/interfaces/data-structure.enum.js":[1170,1654705576598.5315,"a852f6519bee12d578a94bbe2abc66136d0d987b86a5e2497db6a0dcd931cfd5"],"c:/algorithm.js/dist/utils/interfaces/types.js":[112,1654693633370.571,"7dd5e4b372e5b9f87e53ede49d9f5c3709be8cadc1b056a2331388ed8162831d"],"c:/algorithm.js/dist/utils/data-structures/binary-tree.js":[7675,1654705576601.5325,"9794f0e5bd2a500d73202766f612a4f42827cb1699de4ac1f7bff55ca8709529"],"c:/algorithm.js/dist/utils/data-structures/bloom-filter.js":[55,1654149532562.4915,"47b95440e13f3441f4d37b12bb91e3a57f6e14c137cb2df42356cd019390ee0b"],"c:/algorithm.js/dist/utils/data-structures/circular-buffer.js":[58,1654149532563.4917,"3fd1c051ed226550da0f839c096cee0b2f7256de1d28d16129dcb5eb6f34dc8c"],"c:/algorithm.js/dist/utils/data-structures/double-linked-list.js":[2643,1654705576604.5315,"7318680f38bb802792add1bdaa83d06eafc6e33e7f344ac4151b58eb738979b2"],"c:/algorithm.js/dist/utils/data-structures/graph.js":[3955,1654705576610.5315,"3a45d56ce21c25ae304b9e567941a39ff4344f765485f9104f93fa070a657ca7"],"c:/algorithm.js/dist/utils/data-structures/hash-table.js":[2079,1654705576613.5342,"12b407671164db6d5bb9d5dac69a31deb946d25ebc586b1b52bf69e93ee3f23d"],"c:/algorithm.js/dist/utils/data-structures/heap.js":[2884,1654705576616.0315,"426157db893d3e88569d9c9991fb615813e3b496b2d84228927bd39587124ad6"],"c:/algorithm.js/dist/utils/data-structures/least-recently-used-cache.js":[68,1654149532567.4968,"cd963608702f87172e004a61529259ee680c17413f2a42a6cf3c8f232b0af5c9"],"c:/algorithm.js/dist/utils/data-structures/linked-list.js":[3632,1654705576619.032,"dba1e88930eae8d2fd45e67679962f104bd865bd1658107f63225ceb419024d3"],"c:/algorithm.js/dist/utils/data-structures/most-recently-used-cache.js":[67,1654149532569.4917,"37ec17b08a6afa63cb5cb3d901e38b5d4c88a2bb65a8428cedabb94310c092c9"],"c:/algorithm.js/dist/utils/data-structures/priority-queue.js":[1557,1654705576621.5427,"332bc8eaad403c8fb861735c8202eea0781d0a354cdd773ff60996396003a484"],"c:/algorithm.js/dist/utils/data-structures/queue.js":[799,1654705576607.532,"0808cf68a585fcd8f2e33933a5626fa3c6ffbe41408b4be433f25ecb4c640b28"],"c:/algorithm.js/dist/utils/data-structures/red-black-tree.js":[8553,1654705576624.534,"b973e414d0cca485e33c6a291953650232d71032cd25b7a98d3bbe4d4f89122c"],"c:/algorithm.js/dist/utils/data-structures/splay-tree.js":[7746,1654705576626.5334,"6841a0c376e9fa9dbb39fe5ec34e647269077570b012a8acfe38fc835b928550"],"c:/algorithm.js/dist/utils/data-structures/stack.js":[794,1654705576629.5317,"7f53cadeb34cda866a9bd70063dea862d07c725dacaaf16150faacb07397f42f"],"c:/algorithm.js/dist/utils/data-structures/tree.js":[6770,1654149532576.4944,"bc7b4f3f59253672a1e441e6afac830a275986ea9203a403f5b61f124ee5075f"],"c:/algorithm.js/lib/utils/algorithms/binary-search.ts":[743,1654149532582.4912,"2e0ffa375478c1cbb15c380d703d4d08b46e4bba8c7ce387a48ea1ece151fefe"],"c:/algorithm.js/lib/utils/algorithms/bubble-sort.ts":[585,1654149532582.9927,"6590f39e1a16094f14db1c202719e9d85caf475297bf4bcbf0c881da922c4767"],"c:/algorithm.js/lib/utils/algorithms/bucket-sort.ts":[496,1654149532583.4922,"40911080191b57150c5b6d35b557c70980497701feb09eba9d23b7a8fca6d051"],"c:/algorithm.js/lib/utils/algorithms/counting-sort.ts":[759,1654149532583.9917,"afd9b224c4127ae317f94365ae6153a170876442a953c8ca3d3a8f42da55d013"],"c:/algorithm.js/lib/utils/algorithms/cycle-sort.ts":[1274,1654149532584.493,"906356b9e1d8d15c9f8786f1727523ee81cb1e9de33a7298d27061e4a50b747b"],"c:/algorithm.js/lib/utils/algorithms/dijstras-algorithm.ts":[113,1654149532584.9915,"83869658861383a8a7214bd61eb20b3cb6d40c2c65e49c788468e4a4e3f86949"],"c:/algorithm.js/lib/utils/algorithms/fibonacci.ts":[176,1654149532585.5034,"c1ac7b3de1da0defa230e6f25a5c22c12abdd3ce788454068f0edfc8db032feb"],"c:/algorithm.js/lib/utils/algorithms/heap-sort.ts":[1065,1654149532585.992,"8113a417323e938e94be1b1b8e6b41aaf9beb79c8fe09315c8be62b72419aba0"],"c:/algorithm.js/lib/utils/algorithms/insertion-sort.ts":[559,1654149532585.992,"7be181a3d4056822614d5e0443264e7a1b78fc1432116cf3103b6cf92a6b53b2"],"c:/algorithm.js/lib/utils/algorithms/linear-search.ts":[393,1654149532586.4917,"24ce295a3610d0046b5291b88b7f9d549c1a4f4006edf05110548c855f128bb0"],"c:/algorithm.js/lib/utils/algorithms/merge-sort.ts":[792,1654149532586.992,"296b01be84b0a9e13555904dfc0a5343cf806a50a02af23c7a4f02a2932fa8bd"],"c:/algorithm.js/lib/utils/algorithms/patience-sort.ts":[1473,1654149532587.492,"3a33006cb18be8a99e3b5e741d68e89a8dd7ab15beaac74ca728ce712e11385a"],"c:/algorithm.js/lib/utils/algorithms/quick-sort.ts":[722,1654149532587.492,"2d7dfcfcbfb4df5ef83b602010fb9b4f25cb590324fb4714a7a38b8effffa203"],"c:/algorithm.js/lib/utils/algorithms/radix-sort.ts":[661,1654149532587.9915,"ea3aa12d99d570f0b220429a77d0be628a91956ea59b37b6f5a63763c42512dd"],"c:/algorithm.js/lib/utils/algorithms/selection-sort.ts":[645,1654149532588.4915,"84c10617d1fa8d836be1da2efa19a0b1d3bec4b0f0e3519dc4dbbff9e2fbed67"],"c:/algorithm.js/lib/utils/algorithms/shell-sort.ts":[635,1654149532588.9922,"fa9c93e2d38a44d5bc30244a9682fbbba0c1f958e7c896b2519dfa693714cff4"],"c:/algorithm.js/lib/utils/big-o-notation/double-logarithmic-time.ts":[182,1654672683637.4355,"56b84368891c63aa7b4d23d56bf56660a442f1233683ac1d79ae0432a1e3a04b"],"c:/algorithm.js/lib/utils/big-o-notation/exponential-time.ts":[156,1654672547810.995,"913ac7f12e2cf9059a768f98c56a5d805390de0061c941088fc2228959dff6fa"],"c:/algorithm.js/lib/utils/big-o-notation/factorial-time.ts":[270,1654672385027.7227,"d2ee32ef84491b6a7f6637fe42cb54741ab0cbe5c9828b86793a19c7c3001a45"],"c:/algorithm.js/lib/utils/big-o-notation/linear-time.ts":[133,1654672427365.4883,"9106c4d8c3d50b0199a9accc6a7ff2ff34a0b7a01905de6d92946bdd23207132"],"c:/algorithm.js/lib/utils/big-o-notation/linearithmic-time.ts":[170,1654672648517.3623,"f8092ca63678500946edce8f1d87dd2cccd509af5b3456fec2344e9c1506799f"],"c:/algorithm.js/lib/utils/big-o-notation/logarithmic-time.ts":[161,1654672603568.0632,"4ac787531d1ac58de150313805a0fde1ccdf318f713778e578125c7bcbac5d32"],"c:/algorithm.js/lib/utils/big-o-notation/quadratic-time.ts":[152,1654672474813.718,"95e16d67cc7d3eae9c3c03c45b217ff163267140ae9890fadd5762ecbcdd290f"],"c:/algorithm.js/lib/utils/data-structures/binary-tree.ts":[6837,1654175002055.8647,"a96f49a2426e6f32c700ef92277a72ce5b00618e5b1a74c9f6615c222a2d2bb5"],"c:/algorithm.js/lib/utils/data-structures/double-linked-list.ts":[2497,1654149532591.492,"db8318568eed38e2d00c66b4a7d3ef5b2e3334947c95d8bcce936a587c2b0baf"],"c:/algorithm.js/lib/utils/data-structures/graph.ts":[3850,1654149532592.4905,"d2fc4f30b259de0a4342c2e2eb9be16f0d9782f17f3e0a3c781523b86e46de8a"],"c:/algorithm.js/lib/utils/data-structures/hash-table.ts":[2047,1654149532593.495,"f68bc1d5bbfcca73855f50d6908ff666a5919b20773c5b9ca547704b42d6ddcc"],"c:/algorithm.js/lib/utils/data-structures/heap.ts":[2919,1654705571072.9607,"dab9b02decf57c5e6247d93a7e3876590bb2c8bd27dc986f5720571b710baf5c"],"c:/algorithm.js/lib/utils/data-structures/linked-list.ts":[3125,1654149532594.4912,"921b3c521cc47dba559b73353dd3ba749fe1d028694d360d4b471d2932fad98a"],"c:/algorithm.js/lib/utils/data-structures/priority-queue.ts":[1544,1654149532594.9924,"ae63872b8bd2a7b7edd54c9c9c413011f94b59bb0d1cfd756196069a97379b93"],"c:/algorithm.js/lib/utils/data-structures/queue.ts":[760,1654149532595.491,"3ba5df477eb8bbd1157ebade6b2c932f7ac2446b2daacf780f930a728269b32c"],"c:/algorithm.js/lib/utils/data-structures/red-black-tree.ts":[7600,1654699309352.3723,"ea66b43fb270e32bd4041e43e06c08c9e11b27f72b592b327d52bfb86d3f9250"],"c:/algorithm.js/lib/utils/data-structures/splay-tree.ts":[6987,1654701434493.7888,"0c753f0c1d00035232aaf8556fd499f6bc28e48b266525fd7335b377949fd937"],"c:/algorithm.js/lib/utils/data-structures/stack.ts":[852,1654149532596.9912,"711ac9318186ba11c7c16788431d97e565e7034858324a887b2f58d903fe3dad"],"c:/algorithm.js/lib/utils/interfaces/algorithm.enum.ts":[208,1654672930687.0972,"1d38dcd2077445832eec8f781209ff9d22697f0bbcb03f48356c682524dceace"],"c:/algorithm.js/lib/utils/interfaces/data-structure.enum.ts":[1442,1654698277085.3535,"b0d69429f7d812c44d5fa96f638d3a3f274868cd3fc877ad5f09f83bc6d22d57"],"c:\\algorithm.js\\dist\\utils\\data-structures\\heap.js":[2914,1654705689612.9055,"6bfec792a305c15037c5d901df2e14a40ad42a85c5f68276c7d3be728c9887ee"],"c:\\algorithm.js\\lib\\utils\\data-structures\\heap.ts":[2811,1654707198799.4248,"26214897fe2e4c79cc4dd0fc5a640cbb866d2b9f3059ab42e41687562fd82eaf"]} \ No newline at end of file diff --git a/assets/algorithms/doubly-linked-list.png b/assets/algorithms/doubly-linked-list.png new file mode 100644 index 0000000..e8809e8 Binary files /dev/null and b/assets/algorithms/doubly-linked-list.png differ diff --git a/dist/utils/algorithm.js b/dist/utils/algorithm.js index d8d7630..705012e 100644 --- a/dist/utils/algorithm.js +++ b/dist/utils/algorithm.js @@ -1,9 +1,72 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Algorithm = void 0; +const binary_search_1 = require("./algorithms/binary-search"); +const bubble_sort_1 = require("./algorithms/bubble-sort"); +const bucket_sort_1 = require("./algorithms/bucket-sort"); +const counting_sort_1 = require("./algorithms/counting-sort"); +const cycle_sort_1 = require("./algorithms/cycle-sort"); +const dijstras_algorithm_1 = require("./algorithms/dijstras-algorithm"); +const fibonacci_1 = require("./algorithms/fibonacci"); +const heap_sort_1 = require("./algorithms/heap-sort"); +const insertion_sort_1 = require("./algorithms/insertion-sort"); +const linear_search_1 = require("./algorithms/linear-search"); +const merge_sort_1 = require("./algorithms/merge-sort"); +const patience_sort_1 = require("./algorithms/patience-sort"); +const quick_sort_1 = require("./algorithms/quick-sort"); +const radix_sort_1 = require("./algorithms/radix-sort"); +const selection_sort_1 = require("./algorithms/selection-sort"); +const shell_sort_1 = require("./algorithms/shell-sort"); class Algorithm { constructor() { } - create() { } + binarySearch() { + return new binary_search_1.BinarySearch(); + } + bubbleSort() { + return new bubble_sort_1.BubbleSort(); + } + bucketSort() { + return new bucket_sort_1.BucketSort(); + } + countingSort() { + return new counting_sort_1.CountingSort(); + } + cycleSort() { + return new cycle_sort_1.CycleSort(); + } + dijstrasAlgorithm() { + return new dijstras_algorithm_1.DijstrasAlgorithm(); + } + fibonacci() { + return new fibonacci_1.Fibonacci(); + } + heapSort() { + return new heap_sort_1.HeapSort(); + } + insertionSort() { + return new insertion_sort_1.InsertionSort(); + } + linearSearch() { + return new linear_search_1.LinearSearch(); + } + mergeSort() { + return new merge_sort_1.MergeSort(); + } + patienceSort() { + return new patience_sort_1.PatienceSort(); + } + quickSort() { + return new quick_sort_1.QuickSort(); + } + radixSort() { + return new radix_sort_1.RadixSort(); + } + selectionSort() { + return new selection_sort_1.SelectionSort(); + } + shellSort() { + return new shell_sort_1.ShellSort(); + } } exports.Algorithm = Algorithm; //# sourceMappingURL=algorithm.js.map \ No newline at end of file diff --git a/dist/utils/algorithm.js.map b/dist/utils/algorithm.js.map index 0d3ec41..32fa68e 100644 --- a/dist/utils/algorithm.js.map +++ b/dist/utils/algorithm.js.map @@ -1 +1 @@ -{"version":3,"file":"algorithm.js","sourceRoot":"","sources":["../../lib/utils/algorithm.ts"],"names":[],"mappings":";;;AAAA,MAAM,SAAS;IACb,gBAAe,CAAC;IAEhB,MAAM,KAAI,CAAC;CACZ;AAEQ,8BAAS"} \ No newline at end of file +{"version":3,"file":"algorithm.js","sourceRoot":"","sources":["../../lib/utils/algorithm.ts"],"names":[],"mappings":";;;AAAA,8DAA0D;AAC1D,0DAAsD;AACtD,0DAAsD;AACtD,8DAA0D;AAC1D,wDAAoD;AACpD,wEAAoE;AACpE,sDAAmD;AACnD,sDAAkD;AAClD,gEAA4D;AAC5D,8DAA0D;AAC1D,wDAAoD;AACpD,8DAA0D;AAC1D,wDAAoD;AACpD,wDAAoD;AACpD,gEAA4D;AAC5D,wDAAoD;AAEpD,MAAM,SAAS;IACb,gBAAe,CAAC;IAET,YAAY;QACjB,OAAO,IAAI,4BAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,wBAAU,EAAE,CAAC;IAC1B,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,wBAAU,EAAE,CAAC;IAC1B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,4BAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,sBAAS,EAAE,CAAC;IACzB,CAAC;IAEM,iBAAiB;QACtB,OAAO,IAAI,sCAAiB,EAAE,CAAC;IACjC,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,qBAAS,EAAE,CAAC;IACzB,CAAC;IAEM,QAAQ;QACb,OAAO,IAAI,oBAAQ,EAAE,CAAC;IACxB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,8BAAa,EAAE,CAAC;IAC7B,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,4BAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,sBAAS,EAAE,CAAC;IACzB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,4BAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,sBAAS,EAAE,CAAC;IACzB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,sBAAS,EAAE,CAAC;IACzB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,8BAAa,EAAE,CAAC;IAC7B,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,sBAAS,EAAE,CAAC;IACzB,CAAC;CACF;AAEQ,8BAAS"} \ No newline at end of file diff --git a/dist/utils/big-o-notation.js b/dist/utils/big-o-notation.js index 8f10ace..34b90f4 100644 --- a/dist/utils/big-o-notation.js +++ b/dist/utils/big-o-notation.js @@ -1,33 +1,41 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.BigONotation = void 0; +const double_logarithmic_time_1 = require("./big-o-notation/double-logarithmic-time"); +const exponential_time_1 = require("./big-o-notation/exponential-time"); +const factorial_time_1 = require("./big-o-notation/factorial-time"); +const linear_time_1 = require("./big-o-notation/linear-time"); +const linearithmic_time_1 = require("./big-o-notation/linearithmic-time"); +const logarithmic_time_1 = require("./big-o-notation/logarithmic-time"); +const quadratic_time_1 = require("./big-o-notation/quadratic-time"); class BigONotation { constructor() { } - factorial(n) { - return n === 1 ? 1 : n * this.factorial(n - 1); - } - check(time, type) { - return type === 'LINEAR-TIME' - ? time - : type === 'QUADRATIC-TIME' - ? time ** 2 - : type === 'EXPONENTIAL-TIME' - ? 2 ** time - : type === 'FACTORIAL-TIME' - ? this.factorial(time) - : type === 'LOGARITHMIC-TIME' - ? Math.log(time) - : type === 'LINEARITHMIC-TIME' - ? time * Math.log(time) - : type === 'DOUBLE-LOGARITHMIC-TIME' - ? Math.log(Math.log(time)) - : 'What?'; + linearTime() { + return new linear_time_1.LinearTime(); + } + doubleLogarithmicTime() { + return new double_logarithmic_time_1.DoubleLogarithmicTime(); + } + exponentialTime() { + return new exponential_time_1.ExponentialTime(); + } + factorialTime() { + return new factorial_time_1.FactorialTime(); + } + linearithmicTime() { + return new linearithmic_time_1.LinearithmicTime(); + } + logarithmicTime() { + return new logarithmic_time_1.LogarithmicTime(); + } + quadraticTime() { + return new quadratic_time_1.QuadraticTime(); } checkComplexity(time) { const complexityTable = ` | O(n) | O(n^2) | O(log n) | O(n log n) | O(2^n) | O(n!) - | ${this.check(time, 'LINEAR-TIME')} - | ${this.check(time, 'QUADRATIC-TIME')} | ${this.check(time, 'LOGARITHMIC-TIME')} | ${this.check(time, 'LINEARITHMIC-TIME')} | ${this.check(time, 'EXPONENTIAL-TIME')} | ${this.check(time, 'FACTORIAL-TIME')} + | ${this.linearTime().check(time)} + | ${this.quadraticTime().check(time)} | ${this.logarithmicTime().check(time)} | ${this.linearithmicTime().check(time)} | ${this.exponentialTime().check(time)} | ${this.factorialTime().check(time)} `; return complexityTable; } diff --git a/dist/utils/big-o-notation.js.map b/dist/utils/big-o-notation.js.map index 57652f6..5000e89 100644 --- a/dist/utils/big-o-notation.js.map +++ b/dist/utils/big-o-notation.js.map @@ -1 +1 @@ -{"version":3,"file":"big-o-notation.js","sourceRoot":"","sources":["../../lib/utils/big-o-notation.ts"],"names":[],"mappings":";;;AAEA,MAAM,YAAY;IAChB,gBAAe,CAAC;IAER,SAAS,CAAC,CAAS;QACzB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACjD,CAAC;IAEM,KAAK,CAAC,IAAY,EAAE,IAAsB;QAC/C,OAAO,IAAI,KAAK,aAAa;YAC3B,CAAC,CAAC,IAAI;YACN,CAAC,CAAC,IAAI,KAAK,gBAAgB;gBAC3B,CAAC,CAAC,IAAI,IAAI,CAAC;gBACX,CAAC,CAAC,IAAI,KAAK,kBAAkB;oBAC7B,CAAC,CAAC,CAAC,IAAI,IAAI;oBACX,CAAC,CAAC,IAAI,KAAK,gBAAgB;wBAC3B,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;wBACtB,CAAC,CAAC,IAAI,KAAK,kBAAkB;4BAC7B,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;4BAChB,CAAC,CAAC,IAAI,KAAK,mBAAmB;gCAC9B,CAAC,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;gCACvB,CAAC,CAAC,IAAI,KAAK,yBAAyB;oCACpC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;oCAC1B,CAAC,CAAC,OAAO,CAAC;IACd,CAAC;IAEM,eAAe,CAAC,IAAY;QACjC,MAAM,eAAe,GAAG;;SAEnB,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,aAAa,CAAC;SAC/B,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC,OAAO,IAAI,CAAC,KAAK,CACtD,IAAI,EACJ,kBAAkB,CACnB,WAAW,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,mBAAmB,CAAC,QAAQ,IAAI,CAAC,KAAK,CACjE,IAAI,EACJ,kBAAkB,CACnB,YAAY,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,gBAAgB,CAAC;KAC9C,CAAC;QAEF,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AAEQ,oCAAY"} \ No newline at end of file +{"version":3,"file":"big-o-notation.js","sourceRoot":"","sources":["../../lib/utils/big-o-notation.ts"],"names":[],"mappings":";;;AAAA,sFAAiF;AACjF,wEAAoE;AACpE,oEAAgE;AAChE,8DAA0D;AAC1D,0EAAsE;AACtE,wEAAoE;AACpE,oEAAgE;AAEhE,MAAM,YAAY;IAChB,gBAAe,CAAC;IAET,UAAU;QACf,OAAO,IAAI,wBAAU,EAAE,CAAC;IAC1B,CAAC;IAEM,qBAAqB;QAC1B,OAAO,IAAI,+CAAqB,EAAE,CAAC;IACrC,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,kCAAe,EAAE,CAAC;IAC/B,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,8BAAa,EAAE,CAAC;IAC7B,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,oCAAgB,EAAE,CAAC;IAChC,CAAC;IAEM,eAAe;QACpB,OAAO,IAAI,kCAAe,EAAE,CAAC;IAC/B,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,8BAAa,EAAE,CAAC;IAC7B,CAAC;IAEM,eAAe,CAAC,IAAY;QACjC,MAAM,eAAe,GAAG;;SAEnB,IAAI,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;SAC7B,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,eAAe,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,aAAa,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC;KACjN,CAAC;QAEF,OAAO,eAAe,CAAC;IACzB,CAAC;CACF;AAEQ,oCAAY"} \ No newline at end of file diff --git a/dist/utils/big-o-notation/double-logarithmic-time.js b/dist/utils/big-o-notation/double-logarithmic-time.js new file mode 100644 index 0000000..4465a41 --- /dev/null +++ b/dist/utils/big-o-notation/double-logarithmic-time.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.DoubleLogarithmicTime = void 0; +class DoubleLogarithmicTime { + constructor() { } + check(time) { + return Math.log(Math.log(time)); + } +} +exports.DoubleLogarithmicTime = DoubleLogarithmicTime; +//# sourceMappingURL=double-logarithmic-time.js.map \ No newline at end of file diff --git a/dist/utils/big-o-notation/double-logarithmic-time.js.map b/dist/utils/big-o-notation/double-logarithmic-time.js.map new file mode 100644 index 0000000..d410d7c --- /dev/null +++ b/dist/utils/big-o-notation/double-logarithmic-time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"double-logarithmic-time.js","sourceRoot":"","sources":["../../../lib/utils/big-o-notation/double-logarithmic-time.ts"],"names":[],"mappings":";;;AAAA,MAAM,qBAAqB;IACvB,gBAAe,CAAC;IAET,KAAK,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;IACnC,CAAC;CACJ;AAEQ,sDAAqB"} \ No newline at end of file diff --git a/dist/utils/big-o-notation/exponential-time.js b/dist/utils/big-o-notation/exponential-time.js new file mode 100644 index 0000000..f7292a4 --- /dev/null +++ b/dist/utils/big-o-notation/exponential-time.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.ExponentialTime = void 0; +class ExponentialTime { + constructor() { } + check(time) { + return 2 ** time; + } +} +exports.ExponentialTime = ExponentialTime; +//# sourceMappingURL=exponential-time.js.map \ No newline at end of file diff --git a/dist/utils/big-o-notation/exponential-time.js.map b/dist/utils/big-o-notation/exponential-time.js.map new file mode 100644 index 0000000..840f2ac --- /dev/null +++ b/dist/utils/big-o-notation/exponential-time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"exponential-time.js","sourceRoot":"","sources":["../../../lib/utils/big-o-notation/exponential-time.ts"],"names":[],"mappings":";;;AAAA,MAAM,eAAe;IACjB,gBAAe,CAAC;IAET,KAAK,CAAC,IAAY;QACrB,OAAO,CAAC,IAAI,IAAI,CAAC;IACrB,CAAC;CACJ;AAEQ,0CAAe"} \ No newline at end of file diff --git a/dist/utils/big-o-notation/factorial-time.js b/dist/utils/big-o-notation/factorial-time.js new file mode 100644 index 0000000..848903b --- /dev/null +++ b/dist/utils/big-o-notation/factorial-time.js @@ -0,0 +1,14 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.FactorialTime = void 0; +class FactorialTime { + constructor() { } + factorial(n) { + return n === 1 ? 1 : n * this.factorial(n - 1); + } + check(time) { + return this.factorial(time); + } +} +exports.FactorialTime = FactorialTime; +//# sourceMappingURL=factorial-time.js.map \ No newline at end of file diff --git a/dist/utils/big-o-notation/factorial-time.js.map b/dist/utils/big-o-notation/factorial-time.js.map new file mode 100644 index 0000000..8fbfa57 --- /dev/null +++ b/dist/utils/big-o-notation/factorial-time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"factorial-time.js","sourceRoot":"","sources":["../../../lib/utils/big-o-notation/factorial-time.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa;IACf,gBAAe,CAAC;IAER,SAAS,CAAC,CAAS;QACvB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAEM,KAAK,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAChC,CAAC;CACJ;AAEQ,sCAAa"} \ No newline at end of file diff --git a/dist/utils/big-o-notation/linear-time.js b/dist/utils/big-o-notation/linear-time.js new file mode 100644 index 0000000..08919e5 --- /dev/null +++ b/dist/utils/big-o-notation/linear-time.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LinearTime = void 0; +class LinearTime { + constructor() { } + check(time) { + return time; + } +} +exports.LinearTime = LinearTime; +//# sourceMappingURL=linear-time.js.map \ No newline at end of file diff --git a/dist/utils/big-o-notation/linear-time.js.map b/dist/utils/big-o-notation/linear-time.js.map new file mode 100644 index 0000000..0729875 --- /dev/null +++ b/dist/utils/big-o-notation/linear-time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"linear-time.js","sourceRoot":"","sources":["../../../lib/utils/big-o-notation/linear-time.ts"],"names":[],"mappings":";;;AAAA,MAAM,UAAU;IACZ,gBAAe,CAAC;IAET,KAAK,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAEQ,gCAAU"} \ No newline at end of file diff --git a/dist/utils/big-o-notation/linearithmic-time.js b/dist/utils/big-o-notation/linearithmic-time.js new file mode 100644 index 0000000..ca8017e --- /dev/null +++ b/dist/utils/big-o-notation/linearithmic-time.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LinearithmicTime = void 0; +class LinearithmicTime { + constructor() { } + check(time) { + return time * Math.log(time); + } +} +exports.LinearithmicTime = LinearithmicTime; +//# sourceMappingURL=linearithmic-time.js.map \ No newline at end of file diff --git a/dist/utils/big-o-notation/linearithmic-time.js.map b/dist/utils/big-o-notation/linearithmic-time.js.map new file mode 100644 index 0000000..72b0ff4 --- /dev/null +++ b/dist/utils/big-o-notation/linearithmic-time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"linearithmic-time.js","sourceRoot":"","sources":["../../../lib/utils/big-o-notation/linearithmic-time.ts"],"names":[],"mappings":";;;AAAA,MAAM,gBAAgB;IAClB,gBAAe,CAAC;IAET,KAAK,CAAC,IAAY;QACrB,OAAO,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;CACJ;AAEQ,4CAAgB"} \ No newline at end of file diff --git a/dist/utils/big-o-notation/logarithmic-time.js b/dist/utils/big-o-notation/logarithmic-time.js new file mode 100644 index 0000000..6fc3d49 --- /dev/null +++ b/dist/utils/big-o-notation/logarithmic-time.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.LogarithmicTime = void 0; +class LogarithmicTime { + constructor() { } + check(time) { + return Math.log(time); + } +} +exports.LogarithmicTime = LogarithmicTime; +//# sourceMappingURL=logarithmic-time.js.map \ No newline at end of file diff --git a/dist/utils/big-o-notation/logarithmic-time.js.map b/dist/utils/big-o-notation/logarithmic-time.js.map new file mode 100644 index 0000000..58966b1 --- /dev/null +++ b/dist/utils/big-o-notation/logarithmic-time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"logarithmic-time.js","sourceRoot":"","sources":["../../../lib/utils/big-o-notation/logarithmic-time.ts"],"names":[],"mappings":";;;AAAA,MAAM,eAAe;IACjB,gBAAe,CAAC;IAET,KAAK,CAAC,IAAY;QACrB,OAAO,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;CACJ;AAEQ,0CAAe"} \ No newline at end of file diff --git a/dist/utils/big-o-notation/quadratic-time.js b/dist/utils/big-o-notation/quadratic-time.js new file mode 100644 index 0000000..caff78e --- /dev/null +++ b/dist/utils/big-o-notation/quadratic-time.js @@ -0,0 +1,11 @@ +"use strict"; +Object.defineProperty(exports, "__esModule", { value: true }); +exports.QuadraticTime = void 0; +class QuadraticTime { + constructor() { } + check(time) { + return time ** 2; + } +} +exports.QuadraticTime = QuadraticTime; +//# sourceMappingURL=quadratic-time.js.map \ No newline at end of file diff --git a/dist/utils/big-o-notation/quadratic-time.js.map b/dist/utils/big-o-notation/quadratic-time.js.map new file mode 100644 index 0000000..ab1632c --- /dev/null +++ b/dist/utils/big-o-notation/quadratic-time.js.map @@ -0,0 +1 @@ +{"version":3,"file":"quadratic-time.js","sourceRoot":"","sources":["../../../lib/utils/big-o-notation/quadratic-time.ts"],"names":[],"mappings":";;;AAAA,MAAM,aAAa;IACf,gBAAe,CAAC;IAET,KAAK,CAAC,IAAY;QACrB,OAAO,IAAI,IAAI,CAAC,CAAC;IACrB,CAAC;CACJ;AAEQ,sCAAa"} \ No newline at end of file diff --git a/dist/utils/data-structure.js b/dist/utils/data-structure.js index 99a4e43..9159eed 100644 --- a/dist/utils/data-structure.js +++ b/dist/utils/data-structure.js @@ -2,10 +2,49 @@ Object.defineProperty(exports, "__esModule", { value: true }); exports.DataStructure = void 0; const binary_tree_1 = require("./data-structures/binary-tree"); +const double_linked_list_1 = require("./data-structures/double-linked-list"); +const graph_1 = require("./data-structures/graph"); +const hash_table_1 = require("./data-structures/hash-table"); +const heap_1 = require("./data-structures/heap"); +const linked_list_1 = require("./data-structures/linked-list"); +const priority_queue_1 = require("./data-structures/priority-queue"); +const queue_1 = require("./data-structures/queue"); +const red_black_tree_1 = require("./data-structures/red-black-tree"); +const splay_tree_1 = require("./data-structures/splay-tree"); +const stack_1 = require("./data-structures/stack"); class DataStructure { - create(type) { - if (type === "BINARY-TREE") - return new binary_tree_1.BinaryTree(); + binaryTree() { + return new binary_tree_1.BinaryTree(); + } + stack() { + return new stack_1.Stack(); + } + linkedList() { + return new linked_list_1.LinkedList(); + } + doubleLinkedList() { + return new double_linked_list_1.DoubleLinkedList(); + } + graph() { + return new graph_1.Graph(); + } + priorityQueue() { + return new priority_queue_1.PriorityQueue(); + } + hashTable() { + return new hash_table_1.HashTable(); + } + queue() { + return new queue_1.Queue(); + } + splayTree() { + return new splay_tree_1.SplayTree(); + } + redBlackTree() { + return new red_black_tree_1.RedBlackTree(); + } + heap() { + return new heap_1.Heap(); } } exports.DataStructure = DataStructure; diff --git a/dist/utils/data-structure.js.map b/dist/utils/data-structure.js.map index 71c5ca7..cb2f74b 100644 --- a/dist/utils/data-structure.js.map +++ b/dist/utils/data-structure.js.map @@ -1 +1 @@ -{"version":3,"file":"data-structure.js","sourceRoot":"","sources":["../../lib/utils/data-structure.ts"],"names":[],"mappings":";;;AAAA,+DAA2D;AAG3D,MAAM,aAAa;IACV,MAAM,CAAC,IAAuB;QACnC,IAAG,IAAI,KAAK,aAAa;YAAE,OAAO,IAAI,wBAAU,EAAE,CAAA;IACpD,CAAC;CACF;AAEQ,sCAAa"} \ No newline at end of file +{"version":3,"file":"data-structure.js","sourceRoot":"","sources":["../../lib/utils/data-structure.ts"],"names":[],"mappings":";;;AAAA,+DAA2D;AAC3D,6EAAwE;AACxE,mDAAgD;AAChD,6DAAyD;AACzD,iDAA8C;AAC9C,+DAA2D;AAC3D,qEAAiE;AACjE,mDAAgD;AAChD,qEAAgE;AAChE,6DAAyD;AACzD,mDAAgD;AAEhD,MAAM,aAAa;IACV,UAAU;QACf,OAAO,IAAI,wBAAU,EAAE,CAAC;IAC1B,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,aAAK,EAAE,CAAC;IACrB,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,wBAAU,EAAE,CAAC;IAC1B,CAAC;IAEM,gBAAgB;QACrB,OAAO,IAAI,qCAAgB,EAAE,CAAC;IAChC,CAAC;IAEM,KAAK;QACV,OAAO,IAAI,aAAK,EAAE,CAAC;IACrB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,8BAAa,EAAE,CAAC;IAC7B,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,sBAAS,EAAE,CAAC;IACzB,CAAC;IAEM,KAAK;QACV,OAAQ,IAAI,aAAK,EAAE,CAAC;IACtB,CAAC;IAEM,SAAS;QACd,OAAO,IAAI,sBAAS,EAAE,CAAC;IACzB,CAAC;IAEM,YAAY;QACjB,OAAO,IAAI,6BAAY,EAAE,CAAC;IAC5B,CAAC;IAEM,IAAI;QACT,OAAO,IAAI,WAAI,EAAE,CAAC;IACpB,CAAC;CACF;AAEQ,sCAAa"} \ No newline at end of file diff --git a/dist/utils/data-structures/heap.js b/dist/utils/data-structures/heap.js index 609cf5f..5cd2366 100644 --- a/dist/utils/data-structures/heap.js +++ b/dist/utils/data-structures/heap.js @@ -1,111 +1,90 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Heap = void 0; -class HeapNode { - element; - left; - right; - constructor(element) { - this.element = element; - this.left = null; - this.right = null; - } -} +; class Heap { - root; - size; + heap; constructor() { - this.root = null; - this.size = 0; + this.heap = []; } add(element) { - const newNode = new HeapNode(element); - if (this.root === null) { - this.root = newNode; - return this; + this.heap.push(element); + } + maxHeapify(arr, n, i) { + let largest = i; + let l = 2 * i + 1; + let r = 2 * i + 2; + if (l < n && arr[l] > arr[largest]) { + largest = l; } - let current = this.root; - while (current) { - if (element === current.element) - return; - if (element < current.element) { - if (current.left === null) { - current.left = newNode; - return this; - } - current = current.left; - } - else { - if (current.right === null) { - current.right = newNode; - return this; - } - current = current.right; - } - this.size++; + if (r < n && arr[r] > arr[largest]) { + largest = r; + } + if (largest != i) { + let temp = arr[i]; + arr[i] = arr[largest]; + arr[largest] = temp; + this.maxHeapify(arr, n, largest); + } + } + minHeapify(arr, n, i) { + let smallest = i; + let l = 2 * i + 1; + let r = 2 * i + 2; + if (l < n && arr[l] < arr[smallest]) { + smallest = l; + } + if (r < n && arr[r] < arr[smallest]) { + smallest = r; + } + if (smallest != i) { + let temp = arr[i]; + arr[i] = arr[smallest]; + arr[smallest] = temp; + this.minHeapify(arr, n, smallest); } } getRootOfHeap() { - return this.root.element; + return this.heap[0]; } remove(element) { - this.root = this.removeTreeNode(this.root, element); - } - removeTreeNode(current, element) { - if (current === null) - return current; - if (element === current.element) { - if (current.left === null && current.right === null) { - return null; - } - else if (current.left === null) { - return current.right; - } - else if (current.right === null) { - return current.left; + const size = this.heap.length; + let i; + for (i = 0; i < size; i++) { + if (this.heap[i] === element) { + break; } - else { - const tempNode = this.findSmallestTreeNode(current.right); - current.element = tempNode.element; - current.right = this.removeTreeNode(current.right, tempNode.element); - return current; - } - } - else if (element < current.element) { - current.left = this.removeTreeNode(current.left, element); - return current; - } - else { - current.right = this.removeTreeNode(current.right, element); - return current; } + [this.heap[i], this.heap[size - 1]] = [this.heap[size - 1], this.heap[i]]; + this.heap.splice(size - 1); + } + findSmallestHeapNode() { + return Math.min(...this.heap); + } + findBiggestHeapNode() { + return Math.max(...this.heap); + } + removeSmallestTreeNode() { + this.heap.splice(0, this.findSmallestHeapNode()); } - findSmallestTreeNode(element) { - while (element.left !== null) - element = element.left; - return element; + removeBiggestTreeNode() { + console.log(this.findBiggestHeapNode()); } find(element) { - if (this.root === null) - return false; - let current = this.root; - while (current.element !== element) { - if (element < current.element) { - current = current.left; - } - else { - current = current.right; - } - if (current === null) - return null; - } - return { ...current }; + return this.heap.filter(h => h === element).join(); + } + peek() { + return this.heap[this.heap.length - 1]; } clear() { - this.root = null; + this.heap = []; } turnIn(options) { - if (options === 'max') { + for (let i = parseInt(String(this.heap.length / 2 - 1)); i >= 0; i--) { + if (options === 'max') { + this.maxHeapify(this.heap, this.heap.length, i); + } + this.minHeapify(this.heap, this.heap.length, i); } return this; } @@ -113,15 +92,19 @@ class Heap { return this.find(element) ? true : false; } getSize() { - return this.size - 1; + return this.heap.length; } isEmpty() { return this.getSize() === 0; } print() { - return { ...this.root }; + return { ...this.heap }; } } exports.Heap = Heap; const heap = new Heap(); +heap.add(100); +heap.add(20); +heap.add(50); +console.log(heap.turnIn("max").getRootOfHeap()); //# sourceMappingURL=heap.js.map \ No newline at end of file diff --git a/dist/utils/data-structures/heap.js.map b/dist/utils/data-structures/heap.js.map index 5781672..0c02523 100644 --- a/dist/utils/data-structures/heap.js.map +++ b/dist/utils/data-structures/heap.js.map @@ -1 +1 @@ -{"version":3,"file":"heap.js","sourceRoot":"","sources":["../../../lib/utils/data-structures/heap.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"heap.js","sourceRoot":"","sources":["../../../lib/utils/data-structures/heap.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils/data-structures/red-black-tree.js b/dist/utils/data-structures/red-black-tree.js index 7bb01fd..af92013 100644 --- a/dist/utils/data-structures/red-black-tree.js +++ b/dist/utils/data-structures/red-black-tree.js @@ -13,7 +13,7 @@ class RedBlackTree { return this.root.element; } isRed(node) { - return !node ? data_structure_enum_1.BLACK : node.color; + return !this.find(node) ? data_structure_enum_1.BLACK : data_structure_enum_1.RED; } add(key, element) { this.root = this.addRoot(this.root, key, element); @@ -50,6 +50,7 @@ class RedBlackTree { } remove(element) { this.root = this.removeTreeNode(this.root, element); + this.size--; } removeTreeNode(current, element) { if (current === null) @@ -85,28 +86,36 @@ class RedBlackTree { element = element.left; return element; } + findSmallestTrNode() { + return Math.min(...this.breadthFirstSearch()); + } peek(side) { let current = this.root; if (side === 'left') { while (current.left !== null) { current = current.left; if (current.left === null) - return current.element; + return { ...current }; } } while (current.right !== null) { current = current.right; if (current.right === null) - return current.element; + return { ...current }; } } + findBiggestTreeNode() { + return Math.max(...this.breadthFirstSearch()); + } removeSmallestTreeNode() { const smallestTree = Math.min(...this.breadthFirstSearch()); this.root = this.removeTreeNode(this.root, smallestTree); + this.size--; } removeBiggestTreeNode() { const biggestTree = Math.max(...this.breadthFirstSearch()); this.root = this.removeTreeNode(this.root, biggestTree); + this.size--; } breadthFirstSearch() { let visited = []; @@ -148,8 +157,10 @@ class RedBlackTree { this.invertTree(root.left); this.invertTree(root.right); temp = root.left; - root.left = root.right; root.right = temp; + root.left = root.right; + root.color = temp.color; + temp.color = data_structure_enum_1.RED; return root; } flipColors(node) { @@ -174,19 +185,20 @@ class RedBlackTree { let right = this.findMinHeight(root.right); return left < right ? left + 1 : right + 1; } - findMinNode() { - let root = this.root; - while (root.left !== null) { - root = root.left; + next(side) { + let current = this.root; + if (side === 'left') { + if (current.left !== null) { + current = current.left; + this.root = current; + return this; + } } - return root.element; - } - findMaxNode() { - let root = this.root; - while (root.right !== null) { - root = root.right; + if (current.right !== null) { + current = current.right; + this.root = current; + return this; } - return root.element; } isBalanced() { return this.findMinHeight() >= this.findMaxHeight() - 1; @@ -241,10 +253,10 @@ class RedBlackTree { let visited = []; let current = this.root; let traverse = (node) => { - if (node.left) + if (node.left !== null) traverse(node.left); visited.push(node.element); - if (node.right) + if (node.right !== null) traverse(node.right); }; traverse(current); diff --git a/dist/utils/data-structures/red-black-tree.js.map b/dist/utils/data-structures/red-black-tree.js.map index 747cf94..100216d 100644 --- a/dist/utils/data-structures/red-black-tree.js.map +++ b/dist/utils/data-structures/red-black-tree.js.map @@ -1 +1 @@ -{"version":3,"file":"red-black-tree.js","sourceRoot":"","sources":["../../../lib/utils/data-structures/red-black-tree.ts"],"names":[],"mappings":";;;AAAA,2EAAmF;AAEnF,MAAM,YAAY;IACR,IAAI,CAAM;IACV,IAAI,CAAS;IAErB;QACE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC;IAChB,CAAC;IAEM,aAAa;QAClB,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;IAC3B,CAAC;IAEM,KAAK,CAAC,IAAS;QACpB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,2BAAK,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IACpC,CAAC;IAEM,GAAG,CAAC,GAAQ,EAAE,OAAY;QAC/B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;QAClD,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,2BAAK,CAAC;IAC1B,CAAC;IAEO,OAAO,CAAC,IAAS,EAAE,GAAQ,EAAE,OAAY;QAC/C,IAAI,CAAC,IAAI,EAAE;YACT,IAAI,CAAC,IAAI,EAAE,CAAC;YACZ,OAAO,IAAI,kCAAY,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;SACvC;QACD,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YAClB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SACnD;aAAM,IAAI,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE;YACzB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;SACrD;aAAM;YACL,IAAI,CAAC,KAAK,GAAG,OAAO,CAAC;SACtB;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACpD,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAC9B;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YACvD,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;SAC/B;QACD,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE;YACnD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SACvB;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,UAAU;QACf,IAAI,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEpC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,CAAC,KAAK,GAAG,MAAM,EAAE,CAAC,CAAC,CAAC;IAC1D,CAAC;IAEM,MAAM,CAAC,OAAY;QACxB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAEO,cAAc,CAAC,OAAY,EAAE,OAAY;QAC/C,IAAI,OAAO,KAAK,IAAI;YAAE,OAAO,OAAO,CAAC;QAErC,IAAI,OAAO,KAAK,OAAO,CAAC,OAAO,EAAE;YAC/B,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE;gBACnD,OAAO,IAAI,CAAC;aACb;iBAAM,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;gBAChC,OAAO,OAAO,CAAC,KAAK,CAAC;aACtB;iBAAM,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE;gBACjC,OAAO,OAAO,CAAC,IAAI,CAAC;aACrB;iBAAM;gBACL,MAAM,QAAQ,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;gBAC1D,OAAO,CAAC,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC;gBAEnC,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;gBACrE,OAAO,OAAO,CAAC;aAChB;SACF;aAAM,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;YACpC,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;YAC1D,OAAO,OAAO,CAAC;SAChB;aAAM;YACL,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;YAC5D,OAAO,OAAO,CAAC;SAChB;IACH,CAAC;IAEO,oBAAoB,CAAC,OAAY;QACvC,OAAO,OAAO,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;QAErD,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,IAAI,CAAC,IAAU;QACpB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAExB,IAAI,IAAI,KAAK,MAAM,EAAE;YACnB,OAAO,OAAO,CAAC,IAAI,KAAK,IAAI,EAAE;gBAC5B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;gBAEvB,IAAI,OAAO,CAAC,IAAI,KAAK,IAAI;oBAAE,OAAO,OAAO,CAAC,OAAO,CAAC;aACnD;SACF;QAED,OAAO,OAAO,CAAC,KAAK,KAAK,IAAI,EAAE;YAC7B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;YAExB,IAAI,OAAO,CAAC,KAAK,KAAK,IAAI;gBAAE,OAAO,OAAO,CAAC,OAAO,CAAC;SACpD;IACH,CAAC;IAEM,sBAAsB;QAC3B,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAE5D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC;IAC3D,CAAC;IAEM,qBAAqB;QAC1B,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC,CAAC;QAE3D,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;IAC1D,CAAC;IAEM,kBAAkB;QACvB,IAAI,OAAO,GAAG,EAAE,CAAC;QACjB,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAExB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEpB,OAAO,KAAK,CAAC,MAAM,EAAE;YACnB,OAAO,GAAG,KAAK,CAAC,KAAK,EAAE,CAAC;YACxB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YAE9B,IAAI,OAAO,CAAC,IAAI;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YAC3C,IAAI,OAAO,CAAC,KAAK;gBAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;SAC9C;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,UAAU,CAAC,IAAS;QACzB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAI,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC;QAErB,IAAI,CAAC,KAAK,GAAG,GAAG,CAAC,IAAI,CAAC;QACtB,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC;QAChB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,yBAAG,CAAC;QAEjB,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,WAAW,CAAC,IAAS;QAC1B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEvB,IAAI,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC;QAEpB,IAAI,CAAC,IAAI,GAAG,GAAG,CAAC,KAAK,CAAC;QACtB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC;QACjB,GAAG,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,yBAAG,CAAC;QAEjB,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QAChC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO;QAE1B,IAAI,IAAI,CAAC;QAET,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE5B,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QACjB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QAElB,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,UAAU,CAAC,IAAS;QACzB,IAAI,CAAC,KAAK,GAAG,yBAAG,CAAC;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,2BAAK,CAAC;QACxB,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,2BAAK,CAAC;IAC3B,CAAC;IAEM,GAAG,CAAC,GAAQ;QACjB,OAAO,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IACvC,CAAC;IAEO,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QACpC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAE7B,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IAC7C,CAAC;IAEO,aAAa,CAAC,IAAI,GAAG,IAAI,CAAC,IAAI;QACpC,IAAI,IAAI,KAAK,IAAI;YAAE,OAAO,CAAC,CAAC,CAAC;QAE7B,IAAI,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,KAAK,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAE3C,OAAO,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC;IAC7C,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAErB,OAAO,IAAI,CAAC,IAAI,KAAK,IAAI,EAAE;YACzB,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;SAClB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,WAAW;QAChB,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC;QAErB,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,EAAE;YAC1B,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC;SACnB;QAED,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAEM,UAAU;QACf,OAAO,IAAI,CAAC,aAAa,EAAE,IAAI,IAAI,CAAC,aAAa,EAAE,GAAG,CAAC,CAAC;IAC1D,CAAC;IAEM,gBAAgB,CAAC,OAAY;QAClC,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAE9B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,IAAI,CAAC,OAAY;QACtB,IAAI,IAAI,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO,KAAK,CAAC;QAErC,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAExB,OAAO,OAAO,CAAC,OAAO,KAAK,OAAO,EAAE;YAClC,IAAI,OAAO,GAAG,OAAO,CAAC,OAAO,EAAE;gBAC7B,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC;aACxB;iBAAM;gBACL,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC;aACzB;YAED,IAAI,OAAO,KAAK,IAAI;gBAAE,OAAO,IAAI,CAAC;SACnC;QAED,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC;IACxB,CAAC;IAEM,QAAQ;QACb,IAAI,OAAO,GAAU,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAExB,IAAI,QAAQ,GAAG,CAAC,IAAS,EAAE,EAAE;YAC3B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,CAAC;QAElB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,SAAS;QACd,IAAI,OAAO,GAAU,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAExB,IAAI,QAAQ,GAAG,CAAC,IAAS,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,IAAI,IAAI,CAAC,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,CAAC;QAElB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,OAAO;QACZ,IAAI,OAAO,GAAU,EAAE,CAAC;QACxB,IAAI,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC;QAExB,IAAI,QAAQ,GAAG,CAAC,IAAS,EAAE,EAAE;YAC3B,IAAI,IAAI,CAAC,IAAI;gBAAE,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,KAAK;gBAAE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvC,CAAC,CAAC;QAEF,QAAQ,CAAC,OAAO,CAAC,CAAC;QAElB,OAAO,OAAO,CAAC;IACjB,CAAC;IAEM,KAAK;QACV,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC9B,CAAC;IAEM,OAAO;QACZ,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAEM,KAAK;QACV,OAAO,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC1B,CAAC;CACF;AAEQ,oCAAY"} \ No newline at end of file +{"version":3,"file":"red-black-tree.js","sourceRoot":"","sources":["../../../lib/utils/data-structures/red-black-tree.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils/data-structures/splay-tree.js b/dist/utils/data-structures/splay-tree.js index a833653..7eae7d0 100644 --- a/dist/utils/data-structures/splay-tree.js +++ b/dist/utils/data-structures/splay-tree.js @@ -11,12 +11,14 @@ class SplayTree { } add(key, element) { if (this.isEmpty()) { - return; + this.root = new data_structure_enum_1.SplayNode(key, element); } - if (this.root.key == key) { + // Splay on the key to move the last node on the search path for + // the key to the root of the tree. + this.splay(key); + if (this.root.key == key) return; - } - var node = new data_structure_enum_1.SplayNode(key, element); + let node = new data_structure_enum_1.SplayNode(key, element); if (key > this.root.key) { node.left = this.root; node.right = this.root.right; @@ -81,21 +83,36 @@ class SplayTree { current.right = dummy.left; this.root = current; } - zig() { } - zigZig() { } - zigZag() { } + zig(root = this.root) { + } + zigZig(root = this.root) { } + zigZag(root = this.root) { } clear() { this.root = null; } + rightRotate(node) { + node = this.find(node); + let tmp = node.left; + node.left = tmp.right; + tmp.right = node; + return tmp; + } + leftRotate(node) { + node = this.find(node); + let tmp = node.right; + node.right = tmp.left; + tmp.left = node; + return tmp; + } has(element) { return this.find(element) ? true : false; } - find(element) { + find(key) { if (this.root === null) return false; let current = this.root; - while (current.element !== element) { - if (element < current.element) { + while (current.key !== key) { + if (key < current.key) { current = current.left; } else { @@ -106,12 +123,74 @@ class SplayTree { } return { ...current }; } - findBiggestTreeNode() { } - findSmallestTreeNode() { } - removeSmallestTreeNode() { } - removeBiggestTreeNode() { } - breadthFirstSearch() { } + findBiggestTreeNode() { + return Math.max(...this.breadthFirstSearch()); + } + next(side) { + let current = this.root; + if (side === 'left') { + if (current.left !== null) { + current = current.left; + this.root = current; + return this; + } + } + if (current.right !== null) { + current = current.right; + this.root = current; + return this; + } + } + findSmallestTreeNode() { + return Math.min(...this.breadthFirstSearch()); + } + removeSmallestTreeNode() { + const smallestTree = Math.min(...this.breadthFirstSearch()); + this.root = this.removeTreeNode(this.root, smallestTree); + } + removeBiggestTreeNode() { + const biggestTree = Math.max(...this.breadthFirstSearch()); + this.root = this.removeTreeNode(this.root, biggestTree); + } + removeTreeNode(key, element) { + if (this.isEmpty()) + this.root = new data_structure_enum_1.SplayNode(key, element); + // Splay on the key to move the last node on the search path for + // the key to the root of the tree. + this.splay(key); + if (this.root.key == key) + return; + let node = new data_structure_enum_1.SplayNode(key, element); + if (key > this.root.key) { + node.left = this.root; + node.right = this.root.right; + this.root.right = null; + } + else { + node.right = this.root; + node.left = this.root.left; + this.root.left = null; + } + this.root = node; + } + breadthFirstSearch() { + let visited = []; + let queue = []; + let current = this.root; + queue.push(current); + while (queue.length) { + current = queue.shift(); + visited.push(current.element); + if (current.left) + queue.push(current.left); + if (current.right) + queue.push(current.right); + } + return visited; + } summOfTree() { + let arr = this.breadthFirstSearch(); + return arr.reduce((first, second) => first + second, 0); } preOrder() { let visited = []; @@ -153,7 +232,18 @@ class SplayTree { return visited; } getRootOfTree() { - return this.root.element; + return this.root.key; + } + invertTree(root = this.root) { + if (root === null) + return; + let temp; + this.invertTree(root.left); + this.invertTree(root.right); + temp = root.left; + root.left = root.right; + root.right = temp; + return root; } peek() { } isEmpty() { @@ -167,12 +257,4 @@ class SplayTree { } } exports.SplayTree = SplayTree; -const splayTree = new SplayTree(); -splayTree.add("one", 100); -splayTree.add("two", 400); -splayTree.add("three", 320); -splayTree.add("fourth", 20); -splayTree.add("wefw", 10); -splayTree.add("wefer232r23", 10000); -console.log(splayTree.print()); //# sourceMappingURL=splay-tree.js.map \ No newline at end of file diff --git a/dist/utils/data-structures/splay-tree.js.map b/dist/utils/data-structures/splay-tree.js.map index 878dd71..d89041d 100644 --- a/dist/utils/data-structures/splay-tree.js.map +++ b/dist/utils/data-structures/splay-tree.js.map @@ -1 +1 @@ -{"version":3,"file":"splay-tree.js","sourceRoot":"","sources":["../../../lib/utils/data-structures/splay-tree.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"splay-tree.js","sourceRoot":"","sources":["../../../lib/utils/data-structures/splay-tree.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/dist/utils/interfaces/algorithm.enum.js.map b/dist/utils/interfaces/algorithm.enum.js.map index c57e6d9..97742c6 100644 --- a/dist/utils/interfaces/algorithm.enum.js.map +++ b/dist/utils/interfaces/algorithm.enum.js.map @@ -1 +1 @@ -{"version":3,"file":"algorithm.enum.js","sourceRoot":"","sources":["../../../lib/utils/interfaces/algorithm.enum.ts"],"names":[],"mappings":";;AAwBA,MAAe,UAAU;CAExB"} \ No newline at end of file +{"version":3,"file":"algorithm.enum.js","sourceRoot":"","sources":["../../../lib/utils/interfaces/algorithm.enum.ts"],"names":[],"mappings":";;AAKA,MAAe,UAAU;CAExB"} \ No newline at end of file diff --git a/dist/utils/interfaces/data-structure.enum.js b/dist/utils/interfaces/data-structure.enum.js index 7480d14..b95500a 100644 --- a/dist/utils/interfaces/data-structure.enum.js +++ b/dist/utils/interfaces/data-structure.enum.js @@ -1,6 +1,6 @@ "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); -exports.BLACK = exports.RED = exports.SplayNode = exports.RedBlackNode = exports.BinaryNode = exports.IdataStructure = void 0; +exports.BLACK = exports.RED = exports.SplayNode = exports.RedBlackNode = exports.HeapNode = exports.BinaryNode = exports.IdataStructure = void 0; const BLACK = false; exports.BLACK = BLACK; const RED = true; @@ -37,4 +37,10 @@ class SplayNode extends BinaryNode { } } exports.SplayNode = SplayNode; +class HeapNode extends BinaryNode { + constructor(element) { + super(element); + } +} +exports.HeapNode = HeapNode; //# sourceMappingURL=data-structure.enum.js.map \ No newline at end of file diff --git a/dist/utils/interfaces/data-structure.enum.js.map b/dist/utils/interfaces/data-structure.enum.js.map index 0ab9ab4..43048e4 100644 --- a/dist/utils/interfaces/data-structure.enum.js.map +++ b/dist/utils/interfaces/data-structure.enum.js.map @@ -1 +1 @@ -{"version":3,"file":"data-structure.enum.js","sourceRoot":"","sources":["../../../lib/utils/interfaces/data-structure.enum.ts"],"names":[],"mappings":";;;AAiBA,MAAM,KAAK,GAAY,KAAK,CAAC;AAqE3B,sBAAK;AApEP,MAAM,GAAG,GAAY,IAAI,CAAC;AAmExB,kBAAG;AAvDL,MAAe,cAAc;CAQ5B;AAwCC,wCAAc;AAtChB,MAAM,UAAU;IACP,OAAO,CAAM;IACb,IAAI,CAAO;IACX,KAAK,CAAO;IAEnB,YAAY,OAAY;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;CACF;AAgCC,gCAAU;AA9BZ,MAAM,YAAa,SAAQ,UAAU;IAC1B,GAAG,CAAM;IACT,KAAK,CAAU;IAEtB,YAAY,GAAQ,EAAE,OAAY;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACJ;AAqBC,oCAAY;AAnBd,MAAM,SAAU,SAAQ,UAAU;IACzB,GAAG,CAAM;IAEhB,YAAY,GAAQ,EAAE,OAAY;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAYC,8BAAS"} \ No newline at end of file +{"version":3,"file":"data-structure.enum.js","sourceRoot":"","sources":["../../../lib/utils/interfaces/data-structure.enum.ts"],"names":[],"mappings":";;;AAIA,MAAM,KAAK,GAAY,KAAK,CAAC;AA2E3B,sBAAK;AA1EP,MAAM,GAAG,GAAY,IAAI,CAAC;AAyExB,kBAAG;AA7DL,MAAe,cAAc;CAQ5B;AA6CC,wCAAc;AA3ChB,MAAM,UAAU;IACP,OAAO,CAAM;IACb,IAAI,CAAO;IACX,KAAK,CAAO;IAEnB,YAAY,OAAY;QACtB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;IACpB,CAAC;CACF;AAqCC,gCAAU;AAnCZ,MAAM,YAAa,SAAQ,UAAU;IAC1B,GAAG,CAAM;IACT,KAAK,CAAU;IAEtB,YAAY,GAAQ,EAAE,OAAY;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;IACrB,CAAC;CACJ;AA2BC,oCAAY;AAzBd,MAAM,SAAU,SAAQ,UAAU;IACzB,GAAG,CAAM;IAEhB,YAAY,GAAQ,EAAE,OAAY;QAChC,KAAK,CAAC,OAAO,CAAC,CAAC;QAEf,IAAI,CAAC,GAAG,GAAG,GAAG,CAAC;IACjB,CAAC;CACF;AAkBC,8BAAS;AAhBX,MAAM,QAAS,SAAQ,UAAU;IAC/B,YAAY,OAAY;QACtB,KAAK,CAAC,OAAO,CAAC,CAAC;IACjB,CAAC;CACF;AAUC,4BAAQ"} \ No newline at end of file diff --git a/lib/utils/data-structures/heap.ts b/lib/utils/data-structures/heap.ts index be96419..d737fce 100644 --- a/lib/utils/data-structures/heap.ts +++ b/lib/utils/data-structures/heap.ts @@ -1,145 +1,133 @@ -import { heapType } from '../interfaces/data-structure.enum'; - -class HeapNode { - public element: any; - public left: any; - public right: any; - - constructor(element: any) { - this.element = element; - this.left = null; - this.right = null; - } -} +import { heapType } from '../interfaces/data-structure.enum';; class Heap { - private root: any; - private size: number; + private heap: number[]; constructor() { - this.root = null; - this.size = 0; + this.heap = []; } - public add(element: any) { - const newNode = new HeapNode(element); - - if (this.root === null) { - this.root = newNode; - return this; - } + public add(element: any): void { + this.heap.push(element); + } - let current: any = this.root; + private maxHeapify(arr: number[], n: number, i: number): void { + let largest = i; + let l = 2 * i + 1; + let r = 2 * i + 2; - while (current) { - if (element === current.element) return; + if (l < n && arr[l] > arr[largest]) { + largest = l; + } - if (element < current.element) { - if (current.left === null) { - current.left = newNode; - return this; - } + if (r < n && arr[r] > arr[largest]) { + largest = r; + } - current = current.left; - } else { - if (current.right === null) { - current.right = newNode; - return this; - } + if (largest != i) { + let temp = arr[i]; + arr[i] = arr[largest]; + arr[largest] = temp; - current = current.right; + this.maxHeapify(arr, n, largest); } + } - this.size++; - } + private minHeapify(arr: number[], n: number, i: number): void { + let smallest = i; + let l = 2 * i + 1; + let r = 2 * i + 2; + + if (l < n && arr[l] < arr[smallest]) { + smallest = l; + } + + if (r < n && arr[r] < arr[smallest]) { + smallest = r; + } + + if (smallest != i) { + let temp = arr[i]; + arr[i] = arr[smallest]; + arr[smallest] = temp; + + this.minHeapify(arr, n, smallest); + } } public getRootOfHeap(): any { - return this.root.element; + return this.heap[0]; } public remove(element: any): void { - this.root = this.removeTreeNode(this.root, element); - } + const size = this.heap.length; + let i; - private removeTreeNode(current: any, element: any): any { - if (current === null) return current; - - if (element === current.element) { - if (current.left === null && current.right === null) { - return null; - } else if (current.left === null) { - return current.right; - } else if (current.right === null) { - return current.left; - } else { - const tempNode = this.findSmallestTreeNode(current.right); - current.element = tempNode.element; - - current.right = this.removeTreeNode(current.right, tempNode.element); - return current; + for(i = 0; i < size; i++){ + if(this.heap[i] === element) { + break; } - } else if (element < current.element) { - current.left = this.removeTreeNode(current.left, element); - return current; - } else { - current.right = this.removeTreeNode(current.right, element); - return current; } + + [this.heap[i], this.heap[size - 1]] = [this.heap[size - 1], this.heap[i]]; + this.heap.splice(size - 1); } - private findSmallestTreeNode(element: any): any { - while (element.left !== null) element = element.left; - - return element; + public findSmallestHeapNode(): any { + return Math.min(...this.heap); } - public find(element: any): any { - if (this.root === null) return false; + public findBiggestHeapNode(): any { + return Math.max(...this.heap); + } - let current = this.root; + public removeSmallestTreeNode(): void { + this.heap.splice(0, this.findSmallestHeapNode()); + } - while (current.element !== element) { - if (element < current.element) { - current = current.left; - } else { - current = current.right; - } + public removeBiggestTreeNode(): void { + console.log(this.findBiggestHeapNode()); + } - if (current === null) return null; - } + public find(element: any): any { + return this.heap.filter(h => h === element).join(); + } - return { ...current }; + public peek(): any { + return this.heap[this.heap.length - 1]; } public clear(): void { - this.root = null; + this.heap = []; } public turnIn(options: heapType) { - if (options === 'max') { + for (let i = parseInt(String(this.heap.length / 2 - 1)); i >= 0; i--) { + if (options === 'max') { + this.maxHeapify(this.heap, this.heap.length, i); + } + + this.minHeapify(this.heap, this.heap.length, i); } return this; } - public has(element: any): boolean { + public has(element: number): boolean { return this.find(element) ? true : false; } public getSize(): number { - return this.size - 1; + return this.heap.length ; } public isEmpty(): boolean { return this.getSize() === 0; } - public print(): Object { - return { ...this.root }; + public print(): any[] { + return { ...this.heap }; } } -const heap = new Heap(); - export { Heap }; diff --git a/lib/utils/data-structures/red-black-tree.ts b/lib/utils/data-structures/red-black-tree.ts index 232133b..a8ab8df 100644 --- a/lib/utils/data-structures/red-black-tree.ts +++ b/lib/utils/data-structures/red-black-tree.ts @@ -14,7 +14,7 @@ class RedBlackTree { } public isRed(node: any): boolean { - return !node ? BLACK : node.color; + return !this.find(node) ? BLACK : RED; } public add(key: any, element: any): void { @@ -54,6 +54,8 @@ class RedBlackTree { public remove(element: any): void { this.root = this.removeTreeNode(this.root, element); + + this.size--; } private removeTreeNode(current: any, element: any): any { @@ -88,6 +90,10 @@ class RedBlackTree { return element; } + public findSmallestTrNode(): any { + return Math.min(...this.breadthFirstSearch()); + } + public peek(side: side): any { let current = this.root; @@ -95,30 +101,38 @@ class RedBlackTree { while (current.left !== null) { current = current.left; - if (current.left === null) return current.element; + if (current.left === null) return {...current}; } } while (current.right !== null) { current = current.right; - if (current.right === null) return current.element; + if (current.right === null) return {...current}; } } + public findBiggestTreeNode(): any { + return Math.max(...this.breadthFirstSearch()); + } + public removeSmallestTreeNode(): void { const smallestTree = Math.min(...this.breadthFirstSearch()); this.root = this.removeTreeNode(this.root, smallestTree); + + this.size--; } public removeBiggestTreeNode(): void { const biggestTree = Math.max(...this.breadthFirstSearch()); this.root = this.removeTreeNode(this.root, biggestTree); + + this.size--; } - public breadthFirstSearch() { + public breadthFirstSearch(): any[] { let visited = []; let queue = []; let current = this.root; @@ -171,8 +185,10 @@ class RedBlackTree { this.invertTree(root.right); temp = root.left; - root.left = root.right; root.right = temp; + root.left = root.right; + root.color = temp.color; + temp.color = RED; return root; } @@ -204,25 +220,27 @@ class RedBlackTree { return left < right ? left + 1 : right + 1; } + + public next(side: side): any { + let current = this.root; + + if (side === 'left') { + if (current.left !== null) { + current = current.left; - public findMinNode(): any { - let root = this.root; + this.root = current; - while (root.left !== null) { - root = root.left; + return this; + } } - return root.element; - } + if (current.right !== null) { + current = current.right; - public findMaxNode(): any { - let root = this.root; + this.root = current; - while (root.right !== null) { - root = root.right; + return this; } - - return root.element; } public isBalanced(): boolean { @@ -288,9 +306,11 @@ class RedBlackTree { let current = this.root; let traverse = (node: any) => { - if (node.left) traverse(node.left); + if (node.left !== null) traverse(node.left); + visited.push(node.element); - if (node.right) traverse(node.right); + + if (node.right !== null) traverse(node.right); }; traverse(current); diff --git a/lib/utils/data-structures/splay-tree.ts b/lib/utils/data-structures/splay-tree.ts index 87ad073..17ebd60 100644 --- a/lib/utils/data-structures/splay-tree.ts +++ b/lib/utils/data-structures/splay-tree.ts @@ -8,6 +8,31 @@ class SplayTree { this.root = null; this.size = 0; } + + public add(key: any, element: any): void { + if (this.isEmpty()) { + this.root = new SplayNode(key, element); + } + // Splay on the key to move the last node on the search path for + // the key to the root of the tree. + this.splay(key); + + if (this.root.key == key) return; + + let node = new SplayNode(key, element); + + if (key > this.root.key) { + node.left = this.root; + node.right = this.root.right; + this.root.right = null; + } else { + node.right = this.root; + node.left = this.root.left; + this.root.left = null; + } + + this.root = node; + } public splay(key: any): any { if (this.isEmpty()) { @@ -60,27 +85,49 @@ class SplayTree { this.root = current; } - public zig() {} + public zig(root = this.root) { + + } - public zigZig() {} + public zigZig(root = this.root) {} - public zigZag() {} + public zigZag(root = this.root) {} public clear(): void { this.root = null; } + public rightRotate(node: any): any { + node = this.find(node); + let tmp = node.left; + + node.left = tmp.right; + tmp.right = node; + + return tmp; + } + + public leftRotate(node: any): any { + node = this.find(node); + let tmp = node.right; + + node.right = tmp.left; + tmp.left = node; + + return tmp; + } + public has(element: any): boolean { return this.find(element) ? true : false; } - public find(element: any): any { + public find(key: any): any { if (this.root === null) return false; let current = this.root; - while (current.element !== element) { - if (element < current.element) { + while (current.key !== key) { + if (key < current.key) { current = current.left; } else { current = current.right; @@ -92,18 +139,95 @@ class SplayTree { return { ...current }; } - public findBiggestTreeNode() {} + public findBiggestTreeNode(): any { + return Math.max(...this.breadthFirstSearch()) + } + + public next(side: side): any { + let current = this.root; + + if (side === 'left') { + if (current.left !== null) { + current = current.left; + + this.root = current; - public findSmallestTreeNode() {} + return this; + } + } - public removeSmallestTreeNode() {} + if (current.right !== null) { + current = current.right; - public removeBiggestTreeNode() {} + this.root = current; - public breadthFirstSearch() {} + return this; + } + } + + public findSmallestTreeNode(): any { + return Math.min(...this.breadthFirstSearch()); + } + + public removeSmallestTreeNode(): void { + const smallestTree = Math.min(...this.breadthFirstSearch()); + + this.root = this.removeTreeNode(this.root, smallestTree); + } + + public removeBiggestTreeNode(): void { + const biggestTree = Math.max(...this.breadthFirstSearch()); + + this.root = this.removeTreeNode(this.root, biggestTree); + } + + public removeTreeNode(key: any, element: any): void { + if (this.isEmpty()) this.root = new SplayNode(key, element); + + // Splay on the key to move the last node on the search path for + // the key to the root of the tree. + + this.splay(key); + + if (this.root.key == key) return; + + let node = new SplayNode(key, element); + + if (key > this.root.key) { + node.left = this.root; + node.right = this.root.right; + this.root.right = null; + } else { + node.right = this.root; + node.left = this.root.left; + this.root.left = null; + } + + this.root = node; + } + + public breadthFirstSearch() { + let visited = []; + let queue = []; + let current = this.root; + + queue.push(current); + + while (queue.length) { + current = queue.shift(); + visited.push(current.element); + + if (current.left) queue.push(current.left); + if (current.right) queue.push(current.right); + } + + return visited; + } - public summOfTree() { + public summOfTree(): number { + let arr = this.breadthFirstSearch(); + return arr.reduce((first, second) => first + second, 0); } public preOrder(): any[] { @@ -150,10 +274,24 @@ class SplayTree { return visited; } - - public getRootOfTree() { - return this.root.element; + public getRootOfTree(): any { + return this.root.key; + } + + public invertTree(root = this.root): any { + if (root === null) return; + + let temp; + + this.invertTree(root.left); + this.invertTree(root.right); + + temp = root.left; + root.left = root.right; + root.right = temp; + + return root; } public peek() {} @@ -171,6 +309,4 @@ class SplayTree { } } -const splayTree = new SplayTree(); - export { SplayTree }; diff --git a/lib/utils/interfaces/data-structure.enum.ts b/lib/utils/interfaces/data-structure.enum.ts index 81947fd..eeb290c 100644 --- a/lib/utils/interfaces/data-structure.enum.ts +++ b/lib/utils/interfaces/data-structure.enum.ts @@ -59,6 +59,12 @@ class SplayNode extends BinaryNode { } } +class HeapNode extends BinaryNode { + constructor(element: any) { + super(element); + } +} + export { priorityQueue, graph, @@ -67,6 +73,7 @@ export { rbtType, heapType, BinaryNode, + HeapNode, RedBlackNode, SplayNode, RED, diff --git a/lib/utils/interfaces/types.ts b/lib/utils/interfaces/types.ts deleted file mode 100644 index 55a14f7..0000000 --- a/lib/utils/interfaces/types.ts +++ /dev/null @@ -1,14 +0,0 @@ -import { Graph } from '../data-structures/graph'; -import { LinkedList } from '../data-structures/linked-list'; -import { PriorityQueue } from '../data-structures/priority-queue'; -import { Queue } from '../data-structures/queue'; -import { Stack } from '../data-structures/stack'; -import { dataStructureType } from './data-structure.enum'; - -type someDataStructures = 'STACK' | 'QUEUE'; - -type ElementaryDataStructure = T extends 'STACK' - ? Stack - : Queue; - -export { ElementaryDataStructure, someDataStructures };