Sorting
Bucket Sort
function bucketSort(arr, bucketSize = 5) {
if (arr.length <= 1) {
return arr;
}
const min = Math.min(...arr);
const max = Math.max(...arr);
const bucketCount = Math.floor((max - min) / bucketSize) + 1;
const buckets = new Array(bucketCount).fill().map(() => []);
for (let i = 0; i < arr.length; i++) {
const bucketIndex = Math.floor((arr[i] - min) / bucketSize);
buckets[bucketIndex].push(arr[i]);
}
for (let i = 0; i < buckets.length; i++) {
buckets[i].sort((a, b) => a - b);
}
return buckets.flat();
}