算法原理(以排序10万个手机号码为例)
- 比较两个手机号码a和b的大小,如果a前面的高位比b的大,那么后面的就不用看了;
- 借助稳定排序算法的思想,可以先按照最后一位来排序手机号码,然后再按照倒数第二位重新排序,最后按照第一位重新排序;
- 经过11次排序后,手机号码就变为有序的了;
- 每次排序有序数据范围较小,可以使用桶排序或计数排序来完成。
使用条件
- 要求数据可以分割独立的“位”来比较;
- 位之间有递进关系,如果高位的大,那么低位的就不用比较了;
- 每一位的数据范围不能过大,要能用线性排序,否则排序时间就做不到O(n);