diff --git a/docs/en/Sorting/Bucket-sort b/docs/en/Sorting/Bucket-sort new file mode 100644 index 00000000..ccd62867 --- /dev/null +++ b/docs/en/Sorting/Bucket-sort @@ -0,0 +1,91 @@ +# Bucket Sort + +Bucket sort, or bin sort, is a sorting algorithm that works by distributing the elements of an array into a number of buckets. +Each bucket is then sorted individually, either using a different sorting algorithm, or by recursively applying the bucket sorting algorithm. + +Time Complexity : O(n) +- Worst Case : O(n^2) +- Average Case: O(n) +- Best Case : O(n) + +Space complexity : +The space complexity of the bucket sort is O(n+k). +Auxiliary space: O(n) + +## Steps + +Suppose there is an array **arr** with **n** distinct elements. Given an element **A**, we can find its index by counting the number of elements smaller than **A**. + +1. If the element is at its correct position, simply leave it as it is. +2. Else, we have to find the correct position of **A** by counting the number of elements smaller than it. Another element **B** is replaced to be moved to its correct position. This process continues until we get an element at the original position of **A**. + +The above-illustrated process constitutes a cycle. Repeat this cycle for every element of the list until the list is sorted. + +## Example + +arr[] = {10, 5, 2, 3} + + index = 0 1 2 3 + +cycle_start = 0 + +item = 10 = arr[0] + +Find position where we put the item + +pos = cycle_start + +i=pos+1 + +while(i < n) + +if (arr[i] < item) + + pos++; + +We put 10 at arr[3] and change item to +old value of arr[3]. + +arr[] = {10, 5, 2, 10} + +item = 3 + +Again rotate rest cycle that start with index '0' + +Find position where we put the item = 3 + +we swap item with element at arr[1] now + +arr[] = {10, 3, 2, 10} + +item = 5 + +Again rotate rest cycle that start with index '0' and item = 5 + +we swap item with element at arr[2]. + +arr[] = {10, 3, 5, 10 } + +item = 2 + +Again rotate rest cycle that start with index '0' and item = 2 + +arr[] = {2, 3, 5, 10} + +Above is one iteration for cycle_stat = 0. + +Repeat above steps for cycle_start = 1, 2, ..n-2 + +## Implementation + +- [C++](https://www.tutorialspoint.com/cplusplus-program-to-implement-bucket-sort) +- [Java](https://www.codespeedy.com/bucket-sort-in-java/) +- [Python](https://stackabuse.com/bucket-sort-in-python/) + +## Video URL + +[Youtube Video about Bucket Sort](https://www.youtube.com/watch?v=JMlYkE8hGJM&feature=share&utm_source=EJGixIgBCJiu2KjB4oSJEQ) + +## Other + +[Wikipedia](https://en.wikipedia.org/wiki/Bucket_sort)