JSFiddle - React, Tailwind, and code Playground
by masteram
HTML
<h2>Measuring Sorting Speed</h2>
<div class="content">
<form>
<p><input type="button" id="btnStart" value="Run"></p>
</form>
</div>
<h3>Output</h3>
<div class="content">
<div id="output"></div>
</div>
CSS
#output {
background-color: #EEEEEE;
padding: 1ex;
}
#output p {
font-family: monospace;
margin: 0;
}
JavaScript
"use strict";
var actualCode = function()
{
var ary, dataSize;
var dataSizes = [1000, 2000, 4000, 8000, 16000, 32000, 64000, 128000, 256000];
var sortingFunctions = [
{
name: "heapsort",
fn: function(ary)
{
heapsort(ary);
}
},
{
name: "built-in sort",
fn: function(ary)
{
ary.sort();
}
},
{
name: "built-in sort with number comparison",
fn: function(ary)
{
ary.sort(compareNumbers);
}
}];
var runsPerDataSize = 10;
sortingFunctions.forEach(function(f)
{
print(f.name);
var s = f.fn;
dataSizes.forEach(function(dataSize)
{
var nRun, ary;
var masterAry = buildAry(dataSize);
var profilingStart = new Date().getTime();
for(nRun = 0; nRun < runsPerDataSize; ++nRun)
{
ary = masterAry.slice(); // copy
s(ary); // sort and forget about result
if(!checkSorted(ary))
{
print("Not sorted!");
}
}
var profilingElapsed = new Date().getTime() - profilingStart;
print("Number of items: " + dataSize + " -- Time needed (in milliseconds): " + profilingElapsed / runsPerDataSize);
})
});
function heapify(ary)
{
var i;
var arylen = ary.length;
for(i = 1; i < arylen; ++i)
{
repairUpwards(ary, i);
}
}
function fillVacancy(ary, arylen)
{
var first, second;
var i = 0;
while(true)
{
first = (i << 1) + 1;
second = first + 1;
if(first >= arylen)
{
return i;
}
if(second >= arylen)
{
ary[i] = ary[first];
return first;
}
if(ary[first]...