排序(5)基数排序

来源:互联网 发布:第三方数据统计平台 编辑:程序博客网 时间:2024/06/01 09:03

基数排序是根据个位、十位......排序的方式,最好可达O(n)。

本例通过余数获得位上数字的方法效率太低。

 

public static int[] data = {3,7,8,0,9,5,4,1,6,2};public static void sort(int[] number, int d) {int k=0;int n=1;int m=1;//控制键值排序依据在哪一位int[][] temp = new int[number.length][number.length];int[] order = new int[number.length];while(m <= d) {for(int i = 0; i < number.length; i++) {int lsd = ((number[i] / n) % 10);temp[lsd][order[lsd]] = number[i];order[lsd]++;}for(int i = 0; i < d; i++) {if(order[i] != 0)for(int j = 0; j < order[i]; j++) {number[k] = temp[i][j];k++;}order[i] = 0;}n *= 10;k = 0;m++;}}public static void main(String[] args) {sort(data, 10);System.out.println(Arrays.toString(data));}

未完,待春季后再研究通过位运算获得位上数的方法吧。  

 

原创粉丝点击