Code:
public static long COMPARE_32(Comparer comp, Object[] a, Counter counter) {
int n = a.length;
int[] a_int = new int[n];
for(int i=0;i<=n;i++){
a_int[i]=((Integer)a[i]).intValue();
}
//finde Laenge der groessten Zahl
int max=0;
for(int i=0;i<n;i++) if(max<a_int[i]) max=a_int[i];
int max_digits=((int)Math.floor((Math.log(max)/Math.log(10))))+1;
for(int i=1;i<=max_digits;i++){
final int M=2; // Binärwerte
int[] b,z;
int N=a.length;
b=new int[N];
z=new int[M];
for(int j=0;j<M;j++){
z[j]=0;
counter.IncVergleich(1);
}
for(int x=0;i<N;x++){
z[bitsItem.bit(a_int[i],i)]+=1;
counter.IncVergleich(1);
}
for(int j=1;j<M;j++){
z[j]=z[j]+z[j-1];
counter.IncVergleich(1);
}
for(int x=N-1;i>=0;x--)
{
b[z[bitsItem.bit(a_int[i],i)]-1]=a_int[x];
z[bitsItem.bit(a_int[i],i)]-=1;
counter.IncVergleich(1);
}
for (int x=0;i<N;i++){
a_int[i]=b[x];
counter.IncVergleich(1);
}
}
return counter.GetVergleich();
}
In der Methode wird alles mit mit einem int Array gehandhabt, ist es möglich am Ende wieder alles vom Array a_int in das Object Array a zurückzuspeichern?
???:L