基数排序
-
介绍
-
1887年赫尔曼喝了礼发明的
-
基数排序是桶排序的扩展
-
实现思路
- 将所有待比较数值统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成了一个有序序列。
-
应用实例
-
初始状态:53,3,542,748,14,214,使用基数排序,进行反序排序。
-
根据0-9,对应10个桶
-
轮数取决于最大数的位数
-
排序
- 第一轮排序:将每个元素的个位取出,然后看这个数应该放在哪个对应的桶(一个一维数组)比如,53,个位为3,放在标号为3的桶。3,放在标号为3的桶,放在53的下面,后面一次类推。然后,按照桶的顺序,依次取出数据,放入原来数组。54,2,53,3,14,214,748
- 第二轮排序:将每个元素的十位取出,按照第一轮排序的规则,进行放入桶(3这个元素,十位没有,视为0),然后桶排序,依次取出数据,放入原来数组,3,14,214,542,748,53
- 第三轮排序:将每个元素的百位取出,按照第一轮的排序规则,进行放入桶(3这个元素,百位看作0),然后桶排序,依次取出数据,放入原来的数组3,14,53,214,542,748
- 第一轮排序:将每个元素的个位取出,然后看这个数应该放在哪个对应的桶(一个一维数组)比如,53,个位为3,放在标号为3的桶。3,放在标号为3的桶,放在53的下面,后面一次类推。然后,按照桶的顺序,依次取出数据,放入原来数组。54,2,53,3,14,214,748
-
-
-
代码实现
时间测试
排序前的时间是=2019-08-06 16:49:06 排序后的时间是=2019-08-06 16:49:06
-
说明
- 速度很快
- 基数排序是经典的空间换时间的方式,占用内存很大,对海量的数据数据排序时,容易造成OutOfMemoryError
- 基数排序是稳定的,若经过排序,这记录的相对次序保持不变,即在原序列中,r[i]=r[j],且r[i]在r[j]之前,而在排序后的序列中,r[i]仍在r[j]之前,说明排序算法是稳定的,否则不称为稳定。
来源:https://blog.csdn.net/qq_29726359/article/details/98726771