因为思想简单,所以就直接写出他的原理吧:
所谓基是指每个数他某一位的数字,比如948按基展开就是8,4,9,由于取模的良好特性我们便从个位数开始展开这个基,然后我们利用桶子可以推出他们临时优先级,直到最后一位的桶排结束,优先级别则整体确定。
比如:948 947 993 942 94 这四个数字
按个位优先级别是:942 993 94 947 948
按十位优先级别:942 947 948 993 94
按百位优先级别:94 942 947 948 993
这样我们就完成了基数排序,如果数位更多则依次类推,我们在处理同位数基数时必须按照之前排好的顺序再次加入序列。因为有可能高位相等(因为可能有这种情况,则需要一个二维结构去存,对于位数不等的高位需要默认为零),低位有大小之分,这也是基数排序的巧妙的地方,这个方法应该会特别适合大数排序。
具体步骤如下:
1.找出最大值,拆分位数,得到基数排序总次数
2.开始对每一位进行桶排
3.桶排结束后,按桶排结果,把桶里的数字按顺序填入原序列
4.end,总时空复杂度为o(n)