vlambda博客
学习文章列表

排序算法七:桶排序思想

XIE HOU suan fa
排序算法七:桶排序思想
排序算法七:桶排序思想



基于比较的排序除了堆排序,咱们已经讲的差不多了,


我把最有趣的桶排序放在最后一节。


今天2020/7/15号,今天讲讲不基于比较的桶排序思想,为计数排序和基数排序打个基础。




排序(Bucket sort)或所谓的箱排序,是一个排序算法,工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后依次把各个桶中的记录列出来记得到有序序列。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是比较排序,他不受到O(n log n)下限的影响。





桶思想



排序算法七:桶排序思想




1、开辟一定空间的数组,下标从0开始知道arr.length-1;              

2、将待排序的数,按顺序放到与数组下标与数值相同的桶中

3、从0开始将桶中数倒出来,倒出来的数是有序的



也可以这样操作




title
桶排序的思想不变的

桶排序最好情况下使用线性时间O(n),桶排序的时间复杂度,取决与对各个桶之间数据进行排序的时间复杂度,因为其它部分的时间复杂度都为O(n)。很显然,桶划分的越小,各个桶之间的数据越少,排序所用的时间也会越少。但相应的空间消耗就会增大。