Bucket Sort Visualization

Speed:
Step: 0 / -1
Algorithm 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