Bucket Sort

Other topics

Bucket Sort Basic Information

Bucket Sort is a sorting algorithm in which elements of input array are distributed in buckets. After distributing all the elements, buckets are sorted individually by another sorting algorithm. Sometimes it is also sorted by recursive method.

Pseudo code for Bucket Sort

  1. Let n be the length of the input list L;
  2. For each element i from L
  3. If B[i] is not empty
  4. Put A[i] into B[i];
  5. Else B[i] := A[i]
  6. return Concat B[i .. n] into one sorted list;

Example of bucket sort: Bucket Sort Example

Mostly people uses insertion paradigm for little bit of optimization.
Auxiliary Space: O{n}

C# Implementation

public class BucketSort
{
    public static void SortBucket(ref int[] input)
    {
        int minValue = input[0];
        int maxValue = input[0];
        int k = 0;

        for (int i = input.Length - 1; i >= 1; i--)
        {
            if (input[i] > maxValue) maxValue = input[i];
            if (input[i] < minValue) minValue = input[i];
        }

        List<int>[] bucket = new List<int>[maxValue - minValue + 1];

        for (int i = bucket.Length - 1; i >= 0; i--)
        {
            bucket[i] = new List<int>();
        }

        foreach (int i in input)
        {
            bucket[i - minValue].Add(i);
        }

        foreach (List<int> b in bucket)
        {
            if (b.Count > 0)
            {
                foreach (int t in b)
                {
                    input[k] = t;
                    k++;
                }
            }
        }
    }

    public static int[] Main(int[] input)
    {
        SortBucket(ref input);
        return input;
    }
}

Contributors

Topic Id: 7230

Example Ids: 24117,25250

This site is not affiliated with any of the contributors.