Java算法之基数排序

来源:互联网 发布:淘宝美工职业规划 编辑:程序博客网 时间:2024/05/21 09:22

举例:要排序的数组  int[] arr={7,9,8,4,5,1,6,3,2,0};

从小到大排列:

/*基数排序*/public class RadixSort {public static void main(String[] args) {int[] arr={7,9,8,4,5,1,6,3,2,0};int k = 0;    int n = 1;    int m = 1; //控制键值排序依据在哪一位    int[][]temp = new int[10][arr.length]; //数组的第一维表示可能的余数0-9    int[] order = new int[10]; //数组order用来表示该位是i的数的个数        while(m<=arr.length)        {            for(int i=0;i<arr.length;i++)            {                int lsd=((arr[i]/n)%10);                temp[lsd][order[lsd]]=arr[i];                order[lsd]++;            }            for(int i=0;i<10;i++)            {                if(order[i]!=0)                    for(int j=0;j<order[i];j++)                    {                        arr[k]=temp[i][j];                        k++;                    }                order[i]=0;            }            n*=10;            k=0;            m++;        }for(int b=0;b<arr.length;b++){//输出    System.out.println(arr[b]);}}}
运行结果:

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



原创粉丝点击