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]...