桶排序是一个经典的排序算法,特点是速度快,算法复杂度为O(n),且是稳排,当然也是最耗空间的一种算法。
例如:
1)排序一组数[7,3,19,11,6,8,1,15]
最大数是19,那首先创建20个空桶,接着就是把这些数依次放进对应的桶中;
2)有重复的元素,如[7,3,9,11,6,3,7,14],这时候应该保证每个桶能放入多个元素,即最终保证排序稳定性,所以我选择用链表来存储每个桶中的元素,没有元素则为空链表。
以下代码使用了我学习时写的单向链表chain.h,类似于STL中forward_list。