链表应用之基数排序

算法描述:首先从最低位即个位开始排序

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

你可能感兴趣的:(基数排序)