桶排序的简单理解
桶排序
桶排序(BucketSort)算法也是一种经典的以空间换时间的算法。首先给定一定数量的桶,每个桶涵盖了一个数值区间。当所排序的元素属于该区间,就将该元素分配到这个桶中,然后再使用插入排序算法,对每个桶分别排序,最后将每个桶中的元素输出
可以看到动画以30作为一个区间
桶排序过程
1.初始化装入连续区间元素的n个桶,每个桶用来装一段区间中的元素
2.遍历待排序的数据,将其映射到对应的桶中,保证每个桶中的元素都在同一个区间范围中
3.对每个桶进行排序,最终将所有桶中排好序的元素连起来
当桶的数量和需要排序的元素一样多,桶排序此时就变成了计数排序,时间复杂度为O(n)
计数排序
计数排序借助了一个初始化为零的一维数组,数组中第i个元素保存i在待排序数组中出现的次数,在遍历完整个待排序数组之后,只需要将出现过的数字打印出来即可,出现了几次就打印几次... ...