基数排序的方式可以采用最低位优先LSD(Least sgnificant digital)法或最高位优先MSD(Most sgnificant digital)法,LSD的排序方式由键值的最右边开始,而MSD则相反,由键值的最左边开始。我们这里使用LSD法,原理就是一个数组我们首先根据他的个位进行排序,然后在根据十位,百位……,这里最多排到多少位是根据他的最大值确定的,如果最大值有千位,我们必须要计算到千位,如果最多只有十位,我们就计算到十位就可以了,每一位都排序完了之后,数组也就排序成功了,来看一下代码

如果了解基数排序的上面代码可能很容易理解,我们随便找一组代码来测试一下结果吧
看一下运行结果
结果完成正确,看代码不知很直观,我们还是画一个图来帮助我们理解上面的代码吧。
排序的时候先根据个位,然后十位,然后百位,等每个位上的都排序完了之后整个数组也就排序完成了。但是上面代码还不是很完美,因为当出现负数的时候上面代码就没法排序了,我们来想一下当出现负数的时候应该怎么办,话不多说,直接上代码,我们来看一下
其中getMaxNumbit表示返回位数最多的值,也可以说是返回绝对值最大的值,我们看到上面temp加了9,所以如果出现负数就不会报错了,因为每一位只能是从-9~9,总共19个数,当最小-9的时候,再加上9就变为0,下标从0开始,所以也不会出现数组越界异常。
我们找一组数据来测试一下
来看一下运行结果