A TCS BaNCS analytics component receives integer event scores that must be sorted without calling Python's built-in sorting functions. Implement stable bucket sort by distributing values into range-based buckets, sorting each bucket, and concatenating the results.
Implement bucket_sort(nums, bucket_count). The input nums is a list of integers, and bucket_count is a positive integer specifying the number of buckets. Return a new list containing all values in nondecreasing order. Do not mutate nums, and do not use sort(), sorted(), or another comparison-sorting library. Equal values must retain their original relative order, although this property is not observable when values are plain integers.
Use the minimum and maximum values to map each integer to a bucket. Sort every bucket with insertion sort, then concatenate the buckets from left to right. Explain why bucket sort is expected to be efficient for approximately uniform input, and identify its worst-case complexity when many values land in one bucket.
def bucket_sort(nums, bucket_count):