classSolution: definsertionSort(self,nums:[int])->[int]: for i inrange(1,len(nums)): temp = nums[i] j=i while j>0and nums[j-1]>temp: nums[j]=nums[j-1] j-=1 nums[j]=temp return nums defbucketSort(self,nums:[int],bucket_size=n)->[int]: nums_min,nums_max=min(nums),max(nums) bucket_count = (nums_max-nums_min) // bucket_size+1 buckets=[[]for _ inrange (bucket_count)] for num in nums: buckets[(num-nums_min)//bucket_size].append(num) res=[] for bucket in buckets: self.insertionSort(bucket) res.extend(bucket) return res defsortArray(self,nums:[int])->[int]: returnself.bucketSort(nums)