在 JavaScript 中实现桶排序

JavaScriptJavaScriptBeginner
立即练习

This tutorial is from open-source community. Access the source code

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在本实验中,我们将探索 JavaScript 中的桶排序算法。桶排序是一种排序算法,它的工作原理是将数组中的元素分配到多个桶中。然后,每个桶单独进行排序,可以使用不同的排序算法,也可以通过递归应用桶排序算法。本实验将为你提供一个实现此算法的机会,并让你更深入地了解它的工作原理。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL javascript(("JavaScript")) -.-> javascript/BasicConceptsGroup(["Basic Concepts"]) javascript(("JavaScript")) -.-> javascript/AdvancedConceptsGroup(["Advanced Concepts"]) javascript/BasicConceptsGroup -.-> javascript/variables("Variables") javascript/BasicConceptsGroup -.-> javascript/data_types("Data Types") javascript/BasicConceptsGroup -.-> javascript/arith_ops("Arithmetic Operators") javascript/BasicConceptsGroup -.-> javascript/comp_ops("Comparison Operators") javascript/AdvancedConceptsGroup -.-> javascript/higher_funcs("Higher-Order Functions") javascript/AdvancedConceptsGroup -.-> javascript/spread_rest("Spread and Rest Operators") subgraph Lab Skills javascript/variables -.-> lab-28181{{"在 JavaScript 中实现桶排序"}} javascript/data_types -.-> lab-28181{{"在 JavaScript 中实现桶排序"}} javascript/arith_ops -.-> lab-28181{{"在 JavaScript 中实现桶排序"}} javascript/comp_ops -.-> lab-28181{{"在 JavaScript 中实现桶排序"}} javascript/higher_funcs -.-> lab-28181{{"在 JavaScript 中实现桶排序"}} javascript/spread_rest -.-> lab-28181{{"在 JavaScript 中实现桶排序"}} end

桶排序算法

要使用桶排序算法对数字数组进行排序,请遵循以下步骤:

  1. 打开终端/SSH 并输入 node 开始练习编码。
  2. 使用 Math.min()Math.max() 和展开运算符 (...) 找到给定数组的最小值和最大值。
  3. 使用 Array.from()Math.floor() 创建适当数量的 (空数组)。
  4. 使用 Array.prototype.forEach() 用数组中的适当元素填充每个桶。
  5. 对每个桶进行排序,并使用 Array.prototype.reduce()、展开运算符 (...) 和 Array.prototype.sort() 将其追加到结果中。

以下是 JavaScript 中桶排序算法的一个示例实现:

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)], []);
};

要测试该算法,请运行以下代码:

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

总结

恭喜你!你已经完成了桶排序实验。你可以在 LabEx 中练习更多实验来提升你的技能。