跳转到主内容
趣航编程网 - 趣学编程,启航技术之路!

JavaScript中的桶排序详解

本篇文章讲述了 javascript 中的桶排序,大家对 javascript 中的桶排序不了解的话或者对javascript中的桶排序感兴趣的话那么我们就一起来看看本篇文章吧, 好了废话少说进入正题吧 桶排序是计数排序的升级版。它利用了 函数 的映射关系,高效与否的关键就在于这个映射函数的确定。 为了使桶排序更加高效,我们需要做到这两点: 1、在额外空间充足的情况下,尽量增大桶的数量 2、使用的映射函数能够将输入的N个数据均匀的分配到K个桶中 立即学习 “ Java免费学习笔记(深入) ”; php版微信js-sdk支付接口类 php版微信js-sdk支付接口类 下载 同时,对于桶中元素的排序,选择何种比较排序算法对于性能的影响至关重要。 什么时候最快 当输入的数据可以均匀的分配到每一个桶中 什么时候最慢 当输入的数据被分配到了同一个桶中 桶排序JavaScript代码实现:
function bucketSort(arr, bucketSize) { if (arr.length === 0) { return arr; } var i; var minValue = arr[0]; var maxValue = arr[0]; for (i = 1; i < arr.length; i++) { if (arr[i] < minValue) { minValue = arr[i]; //输入数据的最小值 } else if (arr[i] > maxValue) { maxValue = arr[i]; //输入数据的最大值 } } //桶的初始化 var DEFAULT_BUCKET_SIZE = 5; //设置桶的默认数量为5 bucketSize = bucketSize || DEFAULT_BUCKET_SIZE; var bucketCount = Math.floor((maxValue - minValue) / bucketSize) + 1; var buckets = new Array(bucketCount); for (i = 0; i < buckets.length; i++) { buckets[i] = []; } //利用映射函数将数据分配到各个桶中 for (i = 0; i < arr.length; i++) { buckets[Math.floor((arr[i] - minValue) / bucketSize)].push(arr[i]); } arr.length = 0; for (i = 0; i < buckets.length; i++) { insertionSort(buckets[i]); //对每个桶进行排序,这里使用了插入排序 for (var j = 0; j < buckets[i].length; j++) { arr.push(buckets[i][j]); } } return arr;}
以上就是本篇文章的所有内容,大家要是还不太了解的话,可以自己多实现两边就很容易掌握了哦! 相关推荐: PHP实现桶排序算法实例分享

相关文章