TA的每日心情 | 开心 2021-3-12 23:18 |
---|
签到天数: 2 天 [LV.1]初来乍到
|
package spaceAndTimeTradeoffs;
/*
* 用分布计数法,对来自于有限范围整数的一个数组进行排序
* 输入:数组A[0..n-1],数组中的整数位于l和u之间(l<u)
* 输出:A中元素构成的非降序数组S[0..n-1]
*/
public class DistributionCounting {
static int[] sort(int A[],int l,int u){
int s[] = new int[A.length];
int d[] = new int[u-1+1];//保存频率、分布值
for(int i=0;i<d.length;i++){
d = 0;//初始化频率值
}
for(int i=0;i<A.length;i++){
d[A-l]++;//计算频率值
}
for(int i=1;i<d.length;i++){
d = d[i-1]+d;//利用前面算得的频率值计算分布值
}
int j;
for(int i=A.length-1;i>=0;i--){
j = A-l;//j表示元素A在分布值数组d[]中的位置
s[d[j]-1] = A;
d[j]--;//分布值减1
}
return s;
}
public static void main(String[] args) {
int A[] = {11,13,11,12,15,12,14,13,16,15,11,13,15,14,12,16};
int l = 11;
int u = 16;
System.out.println("排序后:");
int s[] = sort(A,l,u);
for(int i=0;i<s.length;i++){
System.out.print(s+" ");
}
}
}
排序后:
11 11 11 12 12 12 13 13 13 14 14 15 15 15 16 16
源码下载:http://file.javaxxz.com/2014/11/13/000614203.zip |
|