JSFiddle - React, Tailwind, and code Playground

by Eugene Vilder

HTML

1
    1
2
    1,2

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);