diff --git a/sorting/bucket_sort.py b/sorting/bucket_sort.py new file mode 100644 index 0000000..980f496 --- /dev/null +++ b/sorting/bucket_sort.py @@ -0,0 +1,30 @@ +#!/usr/bin/env python3 +# -*- coding: utf-8 -*- +# author: bt3gl + +def bucket_sort(list): + + buckets = [[] for _ in range(K)] + + shift = min(lst) + max_val = max(lst) - shift + bucket_size = max(1, max_val / K) + + for i, elem in enumerate(lst): + + index = (elem - shift) // bucket_size + + if index == K: + buckets[K - 1].append(elem) + else: + buckets[index].append(elem) + + for bucket in buckets: + bucket.sort() + + sorted_array = [] + for bucket in buckets: + sorted_array.extend(bucket) + + for i in range(len(lst)): + lst[i] = sorted_array[i]