@@ -7,25 +7,25 @@ public class BucketSort {
77
88 private static final int BUCKETS_COUNT = 10 ;
99
10- public static <T extends Comparable > void apply (T [] items ) {
10+ public static <T extends Comparable < T > > void apply (T [] items ) {
1111 // Prepare empty buckets
12- List <List <Comparable >> buckets = new ArrayList <>(BUCKETS_COUNT );
12+ List <List <Comparable < T > >> buckets = new ArrayList <>(BUCKETS_COUNT );
1313 for (int i = 0 ; i < BUCKETS_COUNT ; i ++) {
1414 buckets .add (new ArrayList <>());
1515 }
1616
1717 // Fill in buckets
18- for (T t : items ) {
19- var bucketIndex = determineBucketIndex (t , BUCKETS_COUNT );
18+ for (var t : items ) {
19+ var bucketIndex = determineBucketIndex (t );
2020 buckets .get (bucketIndex ).add (t );
2121 }
2222
2323 int currIndex = 0 ;
2424 for (int bucketIndex = 0 ; bucketIndex < BUCKETS_COUNT ; bucketIndex ++) {
25- List < Comparable > bucket = buckets .get (bucketIndex );
25+ var bucket = buckets .get (bucketIndex );
2626
2727 // Sort elements in each bucket
28- Comparable [] array = bucket .toArray (new Comparable [0 ]);
28+ var array = bucket .toArray (new Comparable [0 ]);
2929 InsertionSort .apply (array );
3030
3131 // Populate the result array with values from bucket
@@ -39,29 +39,29 @@ public static <T extends Comparable> void apply(T[] items) {
3939 /**
4040 * Not found better way, but sorter parameterized now
4141 */
42- private static int determineBucketIndex (Comparable element , int bucketsCount ) {
42+ private static < T > int determineBucketIndex (Comparable < T > element ) {
4343 if (element instanceof Integer ) {
44- return (int ) ((bucketsCount - 1 ) *
44+ return (int ) ((BUCKETS_COUNT - 1 ) *
4545 ((Integer ) element - (double ) Integer .MIN_VALUE ) / ((double ) Integer .MAX_VALUE - (double ) Integer .MIN_VALUE ));
4646 }
4747 if (element instanceof Long ) {
48- return (int ) ((bucketsCount - 1 ) *
48+ return (int ) ((BUCKETS_COUNT - 1 ) *
4949 ((Long ) element - (double ) Long .MIN_VALUE ) / ((double ) Long .MAX_VALUE - (double ) Long .MIN_VALUE ));
5050 }
5151 if (element instanceof Double ) {
52- return (int ) ((bucketsCount - 1 ) *
52+ return (int ) ((BUCKETS_COUNT - 1 ) *
5353 ((Double ) element - Double .MIN_VALUE ) / (Double .MAX_VALUE - Double .MIN_VALUE ));
5454 }
5555 if (element instanceof Float ) {
56- return (int ) ((bucketsCount - 1 ) *
56+ return (int ) ((BUCKETS_COUNT - 1 ) *
5757 ((Float ) element - Float .MIN_VALUE ) / (Float .MAX_VALUE - Float .MIN_VALUE ));
5858 }
5959 if (element instanceof Byte ) {
60- return (bucketsCount - 1 ) *
60+ return (BUCKETS_COUNT - 1 ) *
6161 ((Byte ) element - Byte .MIN_VALUE ) / (Byte .MAX_VALUE - Byte .MIN_VALUE );
6262 }
6363 if (element instanceof Short ) {
64- return (bucketsCount - 1 ) *
64+ return (BUCKETS_COUNT - 1 ) *
6565 ((Short ) element - Byte .MIN_VALUE ) / (Short .MAX_VALUE - Short .MIN_VALUE );
6666 }
6767
0 commit comments