Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
Run results for:
median
Go to the benchmark
Embed
Embed Benchmark Result
Run details:
User agent:
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36
Browser:
Chrome 127
Operating system:
Mac OS X 10.15.7
Device Platform:
Desktop
Date tested:
one year ago
Test name
Executions per second
1
307.6 Ops/sec
2
32548.8 Ops/sec
Script Preparation code:
var data = Array.from({length: 10000}).map(() => Math.random() * 100);
Tests:
1
const sort = (arr) => { return [...arr].sort((a, b) => a - b); }; const median = (arr) => { const sorted = sort(arr); const mid = (arr.length / 2) | 0; return sorted.length % 2 === 0 ? (sorted[mid - 1] + sorted[mid]) / 2 : sorted[mid]; }; const res = median(data);
2
function swap(arr, i, j) { const temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } function median(arr) { const n = arr.length; function quickSelectInternal(arr, low, high, k) { while (true) { if (high <= low) { return arr[k]; } if (high === low + 1) { if (arr[low] > arr[high]) { swap(arr, low, high); } return arr[k]; } let middle = Math.floor((low + high) / 2); if (arr[middle] > arr[high]) swap(arr, middle, high); if (arr[low] > arr[high]) swap(arr, low, high); if (arr[middle] > arr[low]) swap(arr, middle, low); swap(arr, middle, low + 1); let ll = low + 1; let hh = high; while (true) { do ll++; while (arr[ll] < arr[low]); do hh--; while (arr[hh] > arr[low]); if (hh < ll) break; swap(arr, ll, hh); } swap(arr, low, hh); if (hh <= k) low = ll; if (hh >= k) high = hh - 1; } } const mid = Math.floor((n - 1) / 2); if (n % 2 === 1) { return quickSelectInternal(arr, 0, n - 1, mid); } else { const leftMid = quickSelectInternal(arr, 0, n - 1, mid); const rightMid = quickSelectInternal(arr, 0, n - 1, mid + 1); return (leftMid + rightMid) / 2; } } const res = median(data);