HASTY
JS
performance
Quick sort VS. Bucket sort
A performance test where we run Quick sort against Bucket sort.
Click the run button to get the performance of "quick"- and "bucket"-sorting algorithms.
Globals
const data = [ ...new Array(250).fill(0).map(Math.random) ]
Cases
0 ops/s
function quickSort(arr, left, right) { const len = arr.length; let pivot; let partitionIndex; if (left < right) { pivot = right; partitionIndex = partition(arr, pivot, left, right); quickSort(arr, left, partitionIndex - 1); quickSort(arr, partitionIndex + 1, right); } return arr; } function partition(arr, pivot, left, right) { const pivotValue = arr[pivot]; let partitionIndex = left; for (var i = left; i < right; i++) { if (arr[i] < pivotValue) { swap(arr, i, partitionIndex); partitionIndex++; } } swap(arr, right, partitionIndex); return partitionIndex; } function swap(arr, i, j) { const temp = arr[i]; arr[i] = arr[j]; arr[j] = temp; } quickSort(data);
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)
Shorts
Wall of Love
Embed
Share
Donate
Options
Epochs:
Timeout:
Run