function bucketSort(arr, step = 1) {
const minVal = Math.min(...arr);
const maxVal = Math.max(...arr);
const findElementBucketIndex = item => Math.floor((item - minVal) / step);
const bucketNum = findElementBucketIndex(maxVal) + 1; // 桶的数量
const buckets = []; // 所有桶的集合
// const buckets = new Array(bucketNum);
for (let i = 0; i < bucketNum; ++i) {
const bucketIndex = findElementBucketIndex(item); // 元素所属的桶的下标
buckets[bucketIndex].push(item);
arr.splice(0); // 清空数组,也可以使用新的空间进行处理
.filter(item => item.length > 0) // 过滤空的桶
// 此处可采取任意排序算法,因此采用系统默认排序算法替代