桶排序工作的原理是将数组分到有限数量的桶里。每个桶再个别排序(有可能再使用别的排序算法或是以递归方式继续使用桶排序进行排序),最后依次把各个桶中的记录列出来记得到有序序列。桶排序是鸽巢排序的一种归纳结果。当要被排序的数组内的数值是均匀分配的时候,桶排序使用线性时间(Θ(n))。但桶排序并不是比较排序,他不受到O(n log n)下限的影响。
桶排序的写法是首先创建一个长度足够的桶(数组),例如:int a[10],每个初始默认为0
将输入数据,使数组对应下标值++,例如:输入4,则a[4]++
最后将所有排序输出只需要循环即可,例如:
for(int i=0;i<=9;i++)//从小到大排序输出
{
while(a[i]!=0)//每个a[i]出现的次数
{
printf("%d",a[i]);
a[i]--;
}
}
输入:1 4 4 3 输出:1 3 4 4