龙空技术网

JavaScript桶排序算法详解

刀法如飞 120

前言:

目前同学们对“jslist排序”大概比较关怀,姐妹们都需要了解一些“jslist排序”的相关资讯。那么小编在网摘上汇集了一些有关“jslist排序””的相关知识,希望你们能喜欢,你们快快来学习一下吧!

一、桶排序算法

桶排序(Bucket sort)箱排序,是一个排序算法,工作的原理是将数组分到几个桶里,桶的数量可由排序数组最大值与最小值关系决定,可以固定几个桶。每个桶内再通过插入、冒泡或简单方式进行排序。其算法复杂度接近于:O(N)

步骤是:

1. 找到待排序中最大和最小的元素;

2. 得到桶的数量,比如最大减去最小再除以最小值;

3. 新建一个桶列表,然后遍历数组,再将数组项除以桶的个数得到要存放的桶的下标,将数组项存入到对应桶中;

4. 存入到桶中时,按顺序插入,保持顺序;

5. 数据全部放入桶之后,再遍历桶列表,将二维数组按顺序展开取出即可。

二、计数排序算法执行过程分析:三、桶排序代码JS简版

output: [3, 3, 3.2, 4.3, 10, 15]

四、桶排序标准版,支持负数

output: [-7, -2.1, 3, 3, 3.2, 4.3, 10, 15]

五、总结

计数排序(Counting sort)、基数排序(radix sorting)和桶排序(Bucket Sort)是很类似的排序方式,都是非比较型的排序算法。

计数排序从最最小到最大值建立全部长度数组,然后挨个放里面放入,这对于数据范围很大的数组,需要大量时间和内存,适用性不高。

基数排序是统一为同样的数字长度,数字较短的数前面补零,也就是将数字拆分为个位十位百位。然后从最低位开始,依次进行一次排序。基数排序是线性复杂度,即对n个数字处理了n次,代价较高。

桶排序将数组分到有限数量的桶子里,然后对每个桶子再分别进行排序,不需要过多的桶。对于大量数组,可以先采用桶排序分拆,再用其他排序算法来进行桶内排序。

标签: #jslist排序