【排序】4.基数排序
基数排序:分配式排序
基数排序是稳定的排序算法
public static void sort(int a[],int d){ //d表示数组中最大的数有几位, int k=0; int n=1;//除数 int [][]temp=new int[10][a.length];//桶 int []order=new int[10];//桶中数的个数 for(int i=0;i<d;i++){ for(int j=0;j<a.length;j++){ int l=((a[j]/n)%10); temp[l][order[l]]=a[j]; order[l]++; } for(int j=0;j<10;j++){ if(order[j]!=0){ for(int m=0;m<order[j];m++){ a[k]=temp[j][m]; k++; } } order[j]=0; } n*=10; k=0; } }
时间复杂度:O (nlog(r)m),其中r为所采取的基数,而m为堆数
空间复杂度:O(dr+n)d为长度

浙公网安备 33010602011771号