#!/usr/bin/env python3 # -*- coding: utf-8 -*- def bucket_sort(array, k): buckets = [[] for _ in range(k)] shift = min(array) max_val = max(array) - shift bucket_size = max(1, max_val / k) for i, e in enumerate(array): index = (e - shift) // bucket_size if index == k: buckets[k - 1].append(e) else: buckets[index].append(e) for bucket in buckets: bucket.sort() sorted_array = [] for bucket in buckets: sorted_array.extend(bucket) for i in range(len(array)): array[i] = sorted_array[i]