In your bucketSort method at you think you are using
final int code = hash(input); to calculate the number of buckets, but in reality, you are calculating the hash of your array.
So what you have to do is calculate the number of different hash codes for your array elements.
Use the method which calculates the hash of a single integer, then count how many different hashes you’ve got, then add each integer into the “hash-bucket”, and so on…
CLICK HERE to find out more related problems solutions.