Bucket Sort Visualization
Speed:
Step: 0 / -1Algorithm Code
1function bucketSort(arr, bucketSize = 5) {
2 if (arr.length === 0) {
3 return arr;
4 }
5
6 // Find minimum and maximum values
7 let min = arr[0];
8 let max = arr[0];
9 for (let i = 1; i < arr.length; i++) {
10 if (arr[i] < min) {
11 min = arr[i];
12 } else if (arr[i] > max) {
13 max = arr[i];
14 }
15 }
16
17 // Initialize buckets
18 const bucketCount = Math.floor((max - min) / bucketSize) + 1;
19 const buckets = new Array(bucketCount);
20 for (let i = 0; i < buckets.length; i++) {
21 buckets[i] = [];
22 }
23
24 // Distribute elements into buckets
25 for (let i = 0; i < arr.length; i++) {
26 const bucketIndex = Math.floor((arr[i] - min) / bucketSize);
27 buckets[bucketIndex].push(arr[i]);
28 }
29
30 // Sort individual buckets and merge
31 const result = [];
32 for (let i = 0; i < buckets.length; i++) {
33 // Sort each bucket (using insertion sort for smaller arrays)
34 insertionSort(buckets[i]);
35 // Add sorted elements to result
36 result.push(...buckets[i]);
37 }
38
39 return result;
40 }
41
42 function insertionSort(arr) {
43 for (let i = 1; i < arr.length; i++) {
44 let key = arr[i];
45 let j = i - 1;
46 while (j >= 0 && arr[j] > key) {
47 arr[j + 1] = arr[j];
48 j--;
49 }
50 arr[j + 1] = key;
51 }
52 return arr;
53 }Visualization