diff --git a/Sorts/PigeonHoleSort.js b/Sorts/PigeonHoleSort.js index 98999a6db..820cd9748 100644 --- a/Sorts/PigeonHoleSort.js +++ b/Sorts/PigeonHoleSort.js @@ -6,37 +6,33 @@ https://en.wikipedia.org/wiki/Pigeonhole_sort * (n) and the length of the range of possible key values (N) * are approximately the same. */ -function pigeonhole_sort(arr){ - var min = arr[0]; - var max = arr[0]; - - for(let i=0; i max) - max = arr[i]; - if(arr[i] < min) - min = arr[i]; - } - console.log(max); - console.log(min); - - var range = max - min + 1; - let pigeonhole = Array(range).fill(0); - - for(let i = 0; i0){ - arr[index++]=j+min; - } +function pigeonhole_sort (arr) { + let min = arr[0] + let max = arr[0] + for (let i = 0; i < arr.length; i++) { + if (arr[i] > max) { max = arr[i] } + if (arr[i] < min) { min = arr[i] } + } + console.log(max) + console.log(min) + + const range = max - min + 1 + const pigeonhole = Array(range).fill(0) + + for (let i = 0; i < arr.length; i++) { + pigeonhole[arr[i] - min]++ + } + + let index = 0 + + for (let j = 0; j < range; j++) { + while (pigeonhole[j]-- > 0) { + arr[index++] = j + min } + } } -//Driver code -var arr=Array(8, 3, 2, 7, 4, 6, 8); -pigeonhole_sort(arr); -console.log(arr); +// Driver code +const arr = Array(8, 3, 2, 7, 4, 6, 8) +pigeonhole_sort(arr) +console.log(arr)