@sivarajans/radix-sort
Version:
Radix sort impelementation
1 lines • 1.01 kB
JavaScript
;Object.defineProperty(exports,"__esModule",{value:!0}),exports["default"]=RadixSort;function RadixSort(a){if(!(1>=a.length)){var maxlen=findMaxLength(a),radicalPosDivider=1;do radixPass(a,radicalPosDivider),radicalPosDivider*=10,maxlen-=1;while(0<maxlen)}}function radixPass(a,radixPosition){for(var rem,counter=[0,0,0,0,0,0,0,0,0,0],i=0;i<a.length;i++)rem=getRadicalValue(radixPosition,a[i]),counter[rem]+=1;incrementCounter(counter);for(var _rem,radixSorted=[],_i=a.length-1;0<=_i;_i--)_rem=getRadicalValue(radixPosition,a[_i]),counter[_rem]-=1,radixSorted[counter[_rem]]=a[_i];for(var _i2=0;_i2<radixSorted.length;_i2++)a[_i2]=radixSorted[_i2]}function incrementCounter(counter){for(var i=1;i<counter.length;i++)counter[i]=counter[i-1]+counter[i]}function findMaxLength(a){for(var maxLen=1,i=0;i<a.length;i++)a[i].toString().length>maxLen&&(maxLen=a[i].toString().length);return maxLen}function getRadicalValue(radical,input){var radPosValue=parseInt(input%(10*radical)/radical);return radPosValue}