用 JavaScript 实现桶排序的程序

javascriptweb developmentfront end technologyobject oriented programming更新于 2026/1/26 10:52:17

桶排序的工作原理是将大小为 n 的数组分成 k 个桶,每个桶包含特定范围的元素值。

然后,使用可以根据预期输入大小选择的排序算法对这些桶进行排序。

我们可以如下描述该算法 −

算法:

创建初始 bucketSort 函数
为 i、min、max 和 bucket size 创建变量
查找最小值和最大值
创建 bucket 数量
将值推送到正确的 bucket
对 bucket 进行排序

示例

其代码为 −

const arr = [32, 6, 34, 4, 78, 1, 6767, 4, 65, 34, 879, 7];
const bucketSort = arr => {
   if (arr.length === 0) {
      return arr;
   }
   let i,
   minValue = arr[0],
   maxValue = arr[0],
   bucketSize = 5;
   arr.forEach(function (currentVal) {
      if (currentVal < minValue) {
         minValue = currentVal;
      } else if (currentVal > maxValue) {
         maxValue = currentVal;
      }
   })
   let bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1;
   let allBuckets = new Array(bucketCount);
   for (i = 0; i < allBuckets.length; i++) {
      allBuckets[i] = [];
   }
   arr.forEach(function (currentVal) {
      allBuckets[Math.floor((currentVal - minValue) / bucketSize)].push(currentVal);
   });
   arr.length = 0;
   allBuckets.forEach(function(bucket) {
      insertion(bucket);
      bucket.forEach(function (element) {
         arr.push(element)
      });
   });
   return arr;
}
const insertion = arr => {
   let length = arr.length;
   let i, j;
   for(i = 1; i < length; i++) {
      let temp = arr[i];
      for(j = i - 1; j >= 0 && arr[j] > temp; j--) {
         arr[j+1] = arr[j];
      }
      arr[j+1] = temp;
   }
   return arr;
};
console.log(bucketSort(arr));

输出

控制台中的输出 −

[
   1, 4, 4, 6,
   7, 32, 34, 34,
   65, 78, 879, 6767
]

相关文章


有用资源