Skip to content

Latest commit

 

History

History
46 lines (33 loc) · 1.49 KB

bucketSort.md

File metadata and controls

46 lines (33 loc) · 1.49 KB
标题 标签
bucketSort(桶排序算法) algorithm,array,intermediate(算法,数组,两者之间的)

使用桶排序算法对数字数组进行排序。

  • 使用 Math.min()、Math.max() 和扩展运算符 (...) 来查找给定数组的最小值和最大值。
  • 使用 Array.from() 和 Math.floor() 创建适当数量的桶(空数组)。
  • 使用 Array.prototype.forEach() 用数组中的适当元素填充每个存储桶。
  • 使用 Array.prototype.reduce()、扩展运算符 (...) 和 Array.prototype.sort() 对每个桶进行排序并将其附加到结果中。

代码如下:

const bucketSort = (arr, size = 5) => {
  const min = Math.min(...arr);
  const max = Math.max(...arr);
  const buckets = Array.from(
    { length: Math.floor((max - min) / size) + 1 },
    () => []
  );
  arr.forEach(val => {
    buckets[Math.floor((val - min) / size)].push(val);
  });
  return buckets.reduce((acc, b) => [...acc, ...b.sort((a, b) => a - b)], []);
};

ts 代码如下:

调用方式:

bucketSort([6, 3, 4, 1]); // [1, 3, 4, 6]

应用场景

结果如下:

<iframe src="codes/javascript/html/bucketSort.html"></iframe>