算法描述:首先从最低位即个位开始排序
0 | 31 | 322 | 333 | 324 |
0 | 1 | 2 | 3 | 4 |
这是第一趟排序后的桶,个人认为,第一趟,如有322和422,那么就得人为的把422放在322上面,因为在做后趟时,我发现得从下往上的去填桶
422 |
322 |
2 |
第二趟,第一行,从左往右,按次最低位,即十位来填桶
324 | 333 | |||
0 | 322 | 31 | ||
0 | 1 | 2 | 3 | 4 |
第三趟
333 | ||||
31 | 324 | |||
0 | 322 | |||
0 | 1 | 2 | 3 | 4 |
注意在第二趟换到第三趟,桶0-4假想为空的,从第二趟桶中,从左往右,从下往上的填桶
然后输出
算法证明:
第n趟的结果,对于每一列,最后n个数字组成的数从下往上是增大的
不好证明,举例子:
第一趟的10以内的数,按照顺序排了,在下一趟中,因为前导0,所以排在了第'0'列,从左往右的顺序从下往上的排可以保证由小到大
如果有33和34,第二趟就该
33 | 34 |
3 | 4 |
在第二趟
34在33上面
在下一趟,就都应该在‘0’列由下往上33,34