设待排序序列的长度为 n,桶排序的过程如下:
建立 m 个桶,每个桶保存一定范围内的元素,比如第一个桶保存 0 ~ 1000 之间的元素,第二个桶保存 1001 ~ 2000 之间的元素。每个桶的大小都是 n,因为在最差的情况下,所有的数据元素都会落在一个桶内
对每个桶内的数据元素,按照某种排序算法(比如快排、堆排等)进行排序
在最好的情况下,也就是桶的数量 m 等于元素数量 n,且每个桶内只有 1 个元素时,时间复杂度是 O(n);
在最坏的情况下,也就是所有数据元素都落在一个桶中时,那么桶排序退化为普通的排序算法;
在平均情况下,桶排序的时间复杂度为 O(n + m × (n / m) × log(n / m)) = O(n × (log(n / m) + 1))
O(mn)