Algorithm Sorting Comparison Calculator
ANA›Life Services Authority›National Calculator Authority›Algorithm Sorting Comparison Calculator
.calc-container { max-width: 640px; margin: 2rem 0; padding: 1.5rem; background: #fff; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 1px 3px rgba(0,0,0,0.06); font-family: system-ui, -apple-system, sans-serif; } .calc-container h3 { font-family: Georgia, serif; font-size: 1.15rem; color: #1a1a1a; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-row { display: flex; align-items: center; gap: 0.75rem; margin-bottom: 0.75rem; flex-wrap: wrap; } .calc-row label { min-width: 160px; font-size: 0.9rem; color: #333; font-weight: 500; } .calc-row input[type="number"], .calc-row select { flex: 1; min-width: 120px; max-width: 200px; padding: 0.5rem 0.6rem; border: 1px solid #ccc; border-radius: 4px; font-size: 0.9rem; font-family: system-ui, sans-serif; color: #1a1a1a; background: #fafaf8; } .calc-row input:focus, .calc-row select:focus { outline: none; border-color: var(--ac, #3d5a80); box-shadow: 0 0 0 2px rgba(26,74,138,0.12); } .calc-row .unit { font-size: 0.82rem; color: #888; min-width: 30px; } .calc-btn { display: inline-block; margin-top: 0.5rem; padding: 0.55rem 1.5rem; background: var(--ac, #3d5a80); color: #fff; border: none; border-radius: 4px; font-size: 0.9rem; font-weight: 600; cursor: pointer; font-family: system-ui, sans-serif; } .calc-btn:hover { opacity: 0.9; } .calc-result { margin-top: 1.25rem; padding: 1rem 1.25rem; background: #f0f6fc; border-left: 3px solid var(--ac, #3d5a80); border-radius: 0 6px 6px 0; display: none; } .calc-result.visible { display: block; } .calc-result-label { font-size: 0.78rem; text-transform: uppercase; letter-spacing: 0.06em; color: #666; margin-bottom: 0.25rem; } .calc-result-value { font-size: 1.6rem; font-weight: 700; color: var(--ac, #3d5a80); } .calc-result-detail { font-size: 0.85rem; color: #555; margin-top: 0.5rem; line-height: 1.5; } .calc-note { margin-top: 1rem; font-size: 0.8rem; color: #888; font-style: italic; } .calc-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.75rem; margin-top: 0.75rem; } .calc-grid-item { padding: 0.6rem 0.8rem; background: #f8f9fa; border-radius: 4px; border: 1px solid #eee; } .calc-grid-item .label { font-size: 0.75rem; color: #888; text-transform: uppercase; letter-spacing: 0.04em; } .calc-grid-item .value { font-size: 1.1rem; font-weight: 600; color: #1a1a1a; } @media (max-width: 720px) { .calc-row { flex-direction: column; align-items: flex-start; gap: 0.3rem; } .calc-row label { min-width: auto; } .calc-row input[type="number"], .calc-row select { max-width: 100%; width: 100%; } .calc-grid { grid-template-columns: 1fr; } } .calc-chart { margin: 1rem 0; text-align: center; } .calc-chart svg { max-width: 100%; height: auto; } .calc-chart-legend { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.6rem 1.2rem; margin-top: 0.6rem; font-size: 0.8rem; color: #555; } .calc-chart-legend span { display: inline-flex; align-items: center; gap: 0.3rem; } .calc-chart-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 2px; font-style: normal; } .calc-related { max-width: 640px; margin: 2rem 0 1rem; padding: 1.25rem 1.5rem; background: #f8f9fa; border: 1px solid #e8e8e8; border-radius: 8px; } .calc-related h3 { font-family: Georgia, serif; font-size: 1rem; color: #1a1a1a; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 2px solid var(--ac, #3d5a80); } .calc-related-list { list-style: none; padding: 0; margin: 0 0 0.75rem; display: grid; grid-template-columns: 1fr 1fr; gap: 0.4rem 1.5rem; } .calc-related-list li a { font-size: 0.88rem; color: var(--ac, #3d5a80); text-decoration: none; } .calc-related-list li a:hover { text-decoration: underline; } .calc-browse-all { margin: 0.5rem 0 0; font-size: 0.9rem; font-weight: 600; } .calc-browse-all a { color: var(--ac, #3d5a80); text-decoration: none; } .calc-browse-all a:hover { text-decoration: underline; } @media (max-width: 720px) { .calc-related-list { grid-template-columns: 1fr; } }
Algorithm Sorting Comparison Calculator
Compare the estimated operation counts and space usage of common sorting algorithms for a given array size n.
Array Size (n)
Algorithm
Bubble Sort Selection Sort Insertion Sort Merge Sort Quick Sort (avg) Heap Sort Counting Sort Radix Sort (base 10) Compare All
Max Value k (for Counting/Radix)
Calculate Results will appear here.
document.getElementById('alg-algo').addEventListener('change', function() { var v = this.value; var kRow = document.getElementById('alg-k-row'); kRow.style.display = (v === 'counting' || v === 'radix' || v === 'all') ? 'block' : 'none'; });
function fmtNum(x) { if (!isFinite(x)) return '∞'; if (x >= 1e12) return (x / 1e12).toFixed(2) + ' T'; if (x >= 1e9) return (x / 1e9).toFixed(2) + ' B'; if (x >= 1e6) return (x / 1e6).toFixed(2) + ' M'; if (x >= 1e3) return (x / 1e3).toFixed(2) + ' K'; return x.toFixed(0); }
function log2(x) { return Math.log(x) / Math.log(2); }
function getComplexities(algo, n, k) { var d = Math.max(Math.ceil(Math.log10(k + 1)), 1); var algos = { bubble: { name:'Bubble Sort', best: n, avg: nn, worst: nn, space: 1, stable: true }, selection: { name:'Selection Sort', best: nn, avg: nn, worst: nn, space: 1, stable: false }, insertion: { name:'Insertion Sort', best: n, avg: nn/2, worst: nn, space: 1, stable: true }, merge: { name:'Merge Sort', best: nlog2(n), avg: nlog2(n), worst: nlog2(n), space: n, stable: true }, quick: { name:'Quick Sort (avg)', best: nlog2(n), avg: nlog2(n), worst: nn, space: log2(n), stable: false }, heap: { name:'Heap Sort', best: nlog2(n), avg: nlog2(n), worst: nlog2(n), space: 1, stable: false }, counting: { name:'Counting Sort', best: n+k, avg: n+k, worst: n+k, space: n+k, stable: true }, radix: { name:'Radix Sort (b=10)', best: d(n+10), avg: d(n+10), worst: d*(n+10), space: n+10, stable: true } }; if (algo === 'all') return algos; var r = {}; r[algo] = algos[algo]; return r; }
function algCalc() { var nVal = parseFloat(document.getElementById('alg-n').value); var algo = document.getElementById('alg-algo').value; var kVal = parseFloat(document.getElementById('alg-k').value) || nVal; var res = document.getElementById('alg-result');
if (!nVal || nVal Please enter a valid positive integer for n.'; return; } if (nVal > 10000000) { res.innerHTML = 'n must be ≤ 10,000,000 for meaningful display.'; return; } if ((algo === 'counting' || algo === 'radix' || algo === 'all') && (!kVal || kVal Please enter a valid max value k ≥ 1.'; return; }
var data = getComplexities(algo, nVal, kVal); var keys = Object.keys(data);
var html = '### Results for n = ' + nVal.toLocaleString() + ' '; html += ''; html += '' + 'Algorithm' + 'Best Case Ops' + 'Avg Case Ops' + 'Worst Case Ops' + 'Space' + 'Stable?' + '';
var bestAvg = Infinity, bestAlgo = ''; keys.forEach(function(k) { if (data[k].avg 1) ? 'font-weight:bold;color:#27ae60;' : ''; html += '' + '' + d.name + (k === bestAlgo && keys.length > 1 ? ' ★' : '') + '' + '' + fmtNum(d.best) + '' + '' + fmtNum(d.avg) + '' + '' + fmtNum(d.worst) + '' + 'O(' + fmtNum(d.space) + ')' + '' + (d.stable ? '✅' : '❌') + '' + ''; }); html += '';
if (keys.length > 1) { html += '★ Best average-case performer for n = ' + nVal.toLocaleString() + ': ' + data[bestAlgo].name + '
'; }
// Estimated time at 10^8 ops/sec html += '#### Estimated Wall-Clock Time (@ 10⁸ comparisons/sec) '; html += ''; html += '' + 'Algorithm' + 'Best' + 'Average' + 'Worst' + '';
function fmtTime(ops) { var sec = ops / 1e8; if (sec ' + '' + d.name + '' + '' + fmtTime(d.best) + '' + '' + fmtTime(d.avg) + '' + '' + fmtTime(d.worst) + '' + ''; }); html += ''; res.innerHTML = html; }
#### Formulas (Operation Counts)
Bubble / Selection Sort: O(n²) — Best: n, Avg/Worst: n² Insertion Sort: Best: n, Avg: n²/2, Worst: n² Merge Sort: Θ(n log₂ n) all cases; Space: O(n) Quick Sort: Best/Avg: n log₂ n, Worst: n² (bad pivot); Space: O(log n) stack Heap Sort: Θ(n log₂ n) all cases; Space: O(1) Counting Sort: Θ(n + k) all cases; Space: O(n + k) Radix Sort (base 10): Θ(d·(n + 10)) where d = ⌈log₁₀(k+1)⌉; Space: O(n + 10) Wall-clock estimate assumes 10⁸ operations per second.
#### Assumptions & References
- Reference: Cormen et al., Introduction to Algorithms (CLRS), 4th ed.
More Calculators
- GDPR/HIPAA Penalty Risk Estimator
- Building Occupancy Load Calculator
- Outsourced vs In-House Services Cost Comparison Calculator
- Steel Beam Span and Load Calculator
- Workers Compensation Experience Modifier Calculator
- Commercial Roof Drainage Calculator
- Concrete Crack Repair Cost Estimator
- Auto Claim Settlement Value Estimator
- Total Loss vs Repair Cost Calculator
- Property Damage Loss Assessment Calculator
- Adjuster Liability Exposure Calculator
- Bad Faith Claim Penalty Estimator
Read Next
Study Time Planner Authority Network America › Life Services Authority › National Calculator Authority .calc-container { max-width: 640px;...