{"_id":"@bento.julio/find-min-array","_rev":"3-ff8594a9d3af9a63e74c3bfe1468f8e9","name":"@bento.julio/find-min-array","dist-tags":{"latest":"1.0.2"},"versions":{"1.0.0":{"name":"@bento.julio/find-min-array","version":"1.0.0","keywords":["min","array","algorithm","minimum","search"],"author":{"name":"bento.julio"},"license":"MIT","_id":"@bento.julio/find-min-array@1.0.0","maintainers":[{"name":"bento.julio","email":"bento.julio@lbc-digital.com"}],"homepage":"https://github.com/bento.julio/find-min-array#readme","bugs":{"url":"https://github.com/bento.julio/find-min-array/issues"},"dist":{"shasum":"129bc17ef9554b83bcabefb82c5d808af7b0eb94","tarball":"https://registry.npmjs.org/@bento.julio/find-min-array/-/find-min-array-1.0.0.tgz","fileCount":9,"integrity":"sha512-uIUxc6dFrary/LvVlCiIce8phECyZ0u/h7a2a2fzShGYAyC7Fs1axksJagptnhYffl0v3arbGrh0KXDQYQKmUA==","signatures":[{"sig":"MEUCIBgzx1itpqpFJQ5R2eoIgp/XR4Il4fEPAGn9ECr/RjhfAiEA7rOMqbq0cdpGynA/zRhgAGYd0j8izINnC+5UMmYW6gY=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10919},"main":"src/index.js","exports":{".":"./src/index.js","./algorithms/*":"./src/algorithms/*.js"},"gitHead":"3e90088ee410c84e8ce43f653f6ed2b69f1cb496","scripts":{"test":"node --test tests/findMin.test.js","build":"npm run test && npm run publish","publish":"npm publish"},"_npmUser":{"name":"bento.julio","email":"bento.julio@lbc-digital.com"},"repository":{"url":"git+https://github.com/bento.julio/find-min-array.git","type":"git"},"_npmVersion":"11.1.0","description":"Find the minimum number in an array using multiple algorithms","directories":{},"_nodeVersion":"24.14.0","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/find-min-array_1.0.0_1775124085473_0.8617018520226847","host":"s3://npm-registry-packages-npm-production"}},"1.0.1":{"name":"@bento.julio/find-min-array","version":"1.0.1","keywords":["min","array","algorithm","minimum","search"],"author":{"name":"bentojulio"},"license":"MIT","_id":"@bento.julio/find-min-array@1.0.1","maintainers":[{"name":"bento.julio","email":"bento.julio@lbc-digital.com"}],"dist":{"shasum":"b3b341f26e33c6eb8046c9c4a9736f1c8917bd61","tarball":"https://registry.npmjs.org/@bento.julio/find-min-array/-/find-min-array-1.0.1.tgz","fileCount":9,"integrity":"sha512-SkWMcIyIpd1aE/9ubu/pkJ9GHUh3I7rP/iAbAiMz0X0J8QGGnjUIMnsMRJVQst603cap/zgQfINjZ5y/vrkMLQ==","signatures":[{"sig":"MEUCICxT/aFs2khiDeFvSYOlyWDrL2MmsVcZAp8zMJwia3OoAiEAvDxJjRzNmUAhW4ERknLpzoSukkkQuZwGjfzQNi3y5jk=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":10659},"main":"src/index.js","exports":{".":"./src/index.js","./algorithms/*":"./src/algorithms/*.js"},"gitHead":"20cade5a9a510eec55cefcea2b99768bbca6b16a","scripts":{"test":"node --test tests/findMin.test.js"},"_npmUser":{"name":"bento.julio","email":"bento.julio@lbc-digital.com"},"_npmVersion":"10.8.2","description":"Find the minimum number in an array using multiple algorithms","directories":{},"_nodeVersion":"20.20.1","_hasShrinkwrap":false,"_npmOperationalInternal":{"tmp":"tmp/find-min-array_1.0.1_1775124437908_0.6105960370709216","host":"s3://npm-registry-packages-npm-production"}},"1.0.2":{"name":"@bento.julio/find-min-array","version":"1.0.2","description":"Find the minimum number in an array using multiple algorithms","main":"src/index.js","exports":{".":"./src/index.js","./algorithms/*":"./src/algorithms/*.js"},"scripts":{"test":"node --test tests/findMin.test.js"},"keywords":["min","array","algorithm","minimum","search"],"author":{"name":"bentojulio"},"license":"MIT","_id":"@bento.julio/find-min-array@1.0.2","gitHead":"16b33621cf901c8e7b3dfde2288a19b2d4bba55e","_nodeVersion":"20.20.1","_npmVersion":"10.8.2","dist":{"integrity":"sha512-8q6Xq0tW3Lr5lr6w6xt9Xjs+iP2SRaLIoTghew1LfJ+Esz27p5eV46yl4pugzwwk9Xi6fTWGMMXoYYViAioc3g==","shasum":"a96277fb95bbd2c9666f2e2a7102e8ffd6333288","tarball":"https://registry.npmjs.org/@bento.julio/find-min-array/-/find-min-array-1.0.2.tgz","fileCount":10,"unpackedSize":12118,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEUCIQDwizLBe2NXv0t9dWuL+kuqUSv5tG3Ujyj9d6BKQcyfSAIgRT9Inu7vRdttdNu2olj13k0r2hT9Z1ffj57LeT1JToc="}]},"_npmUser":{"name":"bento.julio","email":"bento.julio@lbc-digital.com"},"directories":{},"maintainers":[{"name":"bento.julio","email":"bento.julio@lbc-digital.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/find-min-array_1.0.2_1775124767918_0.7616382596320719"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-02T10:01:25.335Z","modified":"2026-04-02T10:12:48.181Z","1.0.0":"2026-04-02T10:01:25.645Z","1.0.1":"2026-04-02T10:07:18.054Z","1.0.2":"2026-04-02T10:12:48.072Z"},"author":{"name":"bentojulio"},"license":"MIT","keywords":["min","array","algorithm","minimum","search"],"description":"Find the minimum number in an array using multiple algorithms","maintainers":[{"name":"bento.julio","email":"bento.julio@lbc-digital.com"}],"readme":"# find-min-array\n\nFind the minimum number in an array using multiple algorithms.\n\n## Installation\n\n```bash\nnpm install find-min-array\n```\n\n## Usage\n\n### `findMin(arr, algorithm?)`\n\nThe main entry point. Accepts an array and an optional algorithm name (defaults to `\"linear\"`).\n\n```js\nconst { findMin } = require(\"find-min-array\");\n\nfindMin([3, 1, 4, 1, 5]);                        // 1\nfindMin([3, 1, 4, 1, 5], \"divide-and-conquer\");  // 1\nfindMin([3, 1, 4, 1, 5], \"tournament\");          // 1\nfindMin([3, 1, 4, 1, 5], \"heap\");                // 1\n```\n\n### Importing algorithms directly\n\n```js\nconst { linearMin }           = require(\"find-min-array\");\nconst { divideAndConquerMin } = require(\"find-min-array\");\nconst { tournamentMin }       = require(\"find-min-array\");\nconst { heapMin, MinHeap }    = require(\"find-min-array\");\n```\n\n## Algorithms\n\n### Linear — `\"linear\"`\n\nIterates through the array once, tracking the current minimum.\n\n- **Time:** O(n)\n- **Space:** O(1)\n- **Best for:** General use. Simple and memory-efficient.\n\n```js\nlinearMin([8, 3, 7, 1, 5]); // 1\n```\n\n---\n\n### Divide and Conquer — `\"divide-and-conquer\"`\n\nSplits the array in half recursively, comparing the minimum from each half until a single value remains.\n\n- **Time:** O(n)\n- **Space:** O(log n) — call stack depth\n- **Best for:** Demonstrating recursive decomposition on large arrays.\n\n```js\ndivideAndConquerMin([8, 3, 7, 1, 5]); // 1\n```\n\n---\n\n### Tournament — `\"tournament\"`\n\nPairs elements and compares them in elimination rounds, like a tournament bracket, until one winner (the minimum) remains.\n\n- **Time:** O(n)\n- **Space:** O(n)\n- **Best for:** Scenarios that require finding both minimum and second minimum, or multiple ranked results.\n\n```js\ntournamentMin([8, 3, 7, 1, 5]); // 1\n```\n\n---\n\n### Min-Heap — `\"heap\"`\n\nBuilds a min-heap from the array in O(n). The root of the heap is always the minimum, accessible in O(1).\n\n- **Time:** O(n) to build, O(1) to query\n- **Space:** O(n)\n- **Best for:** Repeated minimum queries on the same dataset.\n\n```js\nheapMin([8, 3, 7, 1, 5]); // 1\n\n// Use MinHeap directly for repeated queries\nconst { MinHeap } = require(\"find-min-array\");\nconst heap = new MinHeap([8, 3, 7, 1, 5]);\nheap.min(); // 1\n```\n\n---\n\n## Algorithm Comparison\n\n| Algorithm          | Time  | Space    | Best Use Case                          |\n|--------------------|-------|----------|----------------------------------------|\n| Linear             | O(n)  | O(1)     | General use, memory-constrained        |\n| Divide and Conquer | O(n)  | O(log n) | Large arrays, recursive approach       |\n| Tournament         | O(n)  | O(n)     | Multiple ranked results needed         |\n| Min-Heap           | O(n)* | O(n)     | Repeated minimum queries on same data  |\n\n*O(n) to build, O(1) per query thereafter.\n\n## Error Handling\n\nAll functions throw an `Error` if the input is not a non-empty array:\n\n```js\nfindMin([]);          // Error: Input must be a non-empty array\nfindMin(\"invalid\");   // Error: Input must be a non-empty array\nfindMin([1], \"sort\"); // Error: Unknown algorithm \"sort\". Available: linear, divide-and-conquer, tournament, heap\n```\n\n## Running Tests\n\n```bash\nnpm test\n```\n\n35 tests covering: typical arrays, single elements, negative numbers, identical values, odd/even lengths, empty arrays, and invalid inputs.\n\n## License\n\nMIT\n","readmeFilename":"README.md"}