var arr=[3,44,38,5,47,15,36,26,27,2,46,4,19,50,48];
var counter=[];
function maxDig(arr,length){
var max=arr[0];
for(var i=1;i<arr.length;i++){
if(max<arr[i])
max=arr[i];
}
var d=1,p=10;
while(max>=p){
max/=p;
d++;
}
return d;
}
function radixSort(arr,maxDigit){
var mod=10,dev=1;
for(var i=0;i<maxDigit;i++,mod*=10,dev*=10){
for(var j=0;j<arr.length;j++){
var bucket=parseInt((arr[j]%mod)/dev);
if(counter[bucket]==null){
counter[bucket]=[];
}
counter[bucket].push(arr[j]);
}
var pos=0;
for(var j=0;j<counter.length;j++){
var value=null;
if(counter[j]!=null){
while((value=counter[j].shift())!=null)
arr[pos++]=value;
}
}
}
return arr;
}
var maxDigit=maxDig(arr,arr.length);
console.log(radixSort(arr,maxDigit));
console