From f110d8715e63fdbdd6ba0a9543f31860792e2bcc Mon Sep 17 00:00:00 2001 From: "Luis A.Tavarez" <51054204+uppy19d0@users.noreply.github.com> Date: Sat, 28 Oct 2023 00:45:39 -0400 Subject: [PATCH] Create Pigeonhole.js This JavaScript code implements the Pigeonhole Sort algorithm for sorting integer arrays. It efficiently organizes small sets of data by distributing values into "holes" based on their magnitudes and then reassembling them in sorted order. --- Coding/JavaScript/Pigeonhole.js | 37 +++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 Coding/JavaScript/Pigeonhole.js diff --git a/Coding/JavaScript/Pigeonhole.js b/Coding/JavaScript/Pigeonhole.js new file mode 100644 index 00000000..bca6931d --- /dev/null +++ b/Coding/JavaScript/Pigeonhole.js @@ -0,0 +1,37 @@ +// Pigeonhole Sort Algorithm in JavaScript +// GitHub: https://github.com/uppy19d0 + +function pigeonholeSort(arr) { + let min = arr[0]; + let max = arr[0]; + + for (let i = 1; i < arr.length; i++) { + if (arr[i] < min) { + min = arr[i]; + } + if (arr[i] > max) { + max = arr[i]; + } + } + + const range = max - min + 1; + const holes = new Array(range).fill().map(() => []); + + for (let i = 0; i < arr.length; i++) { + holes[arr[i] - min].push(arr[i]); + } + + let index = 0; + for (let i = 0; i < range; i++) { + for (const value of holes[i]) { + arr[index++] = value; + } + } + + return arr; +} + +// Example usage: +const inputArray = [8, 3, 2, 7, 4, 6, 8]; +const sortedArray = pigeonholeSort(inputArray); +console.log("Sorted order is:", sortedArray);