排序-8- 基数排序

基数排序

基于元素值的每个位上的字符来排序的。 对于数字而言就是分别基于个位,十位, 百位或千位等等数字来排序。

基数排序(Radix sort)是一种非比较型整数排序算法,其原理是将整数按位数切割成不同的数字,然后按每个位数分别比较。由于整数也可以表达字符串(比如名字或日期)和特定格式的浮点数,所以基数排序也不是只能使用于整数。

将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。然后,从最低位开始,依次进行一次排序。这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。

也就是要先求出数组中最大的数,得到最大数的位数,即可得排序的趟数。
每种位数(个位,十位,百位)上的数都可能是0—9的任意一位,因此要有十个桶,分别放满足条件的数。
每轮(第一轮个位,第二轮十位)都进行一样的操作:每次把数据分到各个桶之后,要把桶里的数按照先进先出的顺序依次复制到原来的数组里,再继续下一轮的排序。 直到最后一轮排序结束。

    function radixSort(arr){
        //得到数组中最大的数
        var max=0;//记录最大的数,因为是算法题,不能直接使用max函数
        for (var i=0;i
平均时间复杂度 最好情况 最坏情况 空间复杂度
O(d*(n+r)) O(d*(n+r)) O(d*(n+r)) O(n+r)

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