Bucket sort VS. Merge sort
A performance test where we run Bucket sort against Merge sort.
Click the run button to get the performance of "bucket"- and "merge"-sorting algorithms.
Globals
const data = [ ...new Array(250).fill(0).map(Math.random) ]
Cases
0 ops/s
function bucketSort(arr, bucketSize) { if (arr.length < 2) { return arr; } const buckets = createBuckets(arr, bucketSize); return sortBuckets(buckets); } function createBuckets(arr, bucketSize) { let min = arr[0]; let max = arr[0]; for (let i = 1; i < arr.length; i++) { if (arr[i] < min) { min = arr[i]; } else if (arr[i] > max) { max = arr[i]; } } const bucketCount = Math.floor((max - min) / bucketSize) + 1; const buckets = []; for (let i = 0; i < arr.length; i++) { const bucketIndex = Math.floor((arr[i] - min) / bucketSize); if (!buckets[bucketIndex]) buckets[bucketIndex] = []; buckets[bucketIndex].push(arr[i]); } return buckets; } function sortBuckets(buckets) { const sortedArr = []; for (let i = 0; i < buckets.length; i++) { if (buckets[i] != null) { insertionSort(buckets[i]); sortedArr.push(...buckets[i]); } } return sortedArr; } bucketSort(data)
0 ops/s
function mergeSort(arr){ const len = arr.length; if(len < 2) return arr; const mid = Math.floor(len/2); const left = arr.slice(0,mid); const right = arr.slice(mid); return merge(mergeSort(left),mergeSort(right)); } function merge(left, right){ const result = []; const lLen = left.length; const rLen = right.length; let l = 0; let r = 0; while(l < lLen && r < rLen){ if(left[l] < right[r]){ result.push(left[l++]); } else{ result.push(right[r++]); } } return result.concat(left.slice(l)).concat(right.slice(r)); } mergeSort(data);
Embed
Share
Options
Epochs:
Timeout:
Run
H
ASTY.DEV
JS
performance
Pre-defined
Notebooks
Blog
Donate
Wall of love 😻
Telegram
Mastodon
Twitter
Use HASTY
Try demo