JSFiddle - React, Tailwind, and code Playground
by Eugene Vilder
JavaScript
var arr = [] , newArr = [];
for (var r=0; r < Math.random()*10 + 0; r++) {
arr.push( Math.random()*10 );
}
/*============================================*/
console.log('Starting...');
Array.prototype.hashSort = function(){
console.time('hashSort');
var mainArr = this , splitArr = [] , i , result = [];
for (i=0; i < mainArr.length; i++) {
var splitedValue = mainArr[i].toString().split('.');
var left = splitedValue[0] || 0;
var right = splitedValue[1] || 0;
splitArr[left] = splitArr[left] || [];
splitArr[left][right] = splitArr[left][right] || [];
splitArr[left][right]++;
}
for (var key in splitArr) {
for (var val in splitArr[key]) {
for (var x=0; x < splitArr[key][val]; x++) {
result.push(Number(key+'.'+val));
}
}
}
console.timeEnd('hashSort');
return result;
}
newArr = arr.hashSort();
console.log('Sorting result of' , newArr.length ,' / ', arr.length , 'records' , arr , newArr);