桶排序是假设输入数据服从[0,1)上的均匀分布,平均情况下,它的时间代价为O(n)
主要思想:
将[0,1)区间划分为n个相同大小的子区间(桶)。然后将n个输入数分别放到各个桶中。先对每个桶中的数进行排序,然后遍历每个桶,按次序把每个桶中的元素输出
伪代码:
BUCKET-SORT(A) //输入数组为A, 临时数组B[0...n-1]存放桶(用链表)
1 n=A.length
2 for i=1 to n
3 insert A[i] into list B[floor(nA[i])]
4 for i=0 to n-1 //链表中执行插入排序方便
5 sort list B[i] with insertion sort
6 concatenate the lists B[0...n-1] together in order