3
3
import java .util .Arrays ;
4
4
5
5
public class BeadSort {
6
+ private enum BeadState {
7
+ BEAD ,
8
+ EMPTY
9
+ }
10
+
6
11
/**
7
12
* Sorts the given array using the BeadSort algorithm.
8
13
*
@@ -21,37 +26,37 @@ private void allInputsMustBeNonNegative(final int[] array) {
21
26
}
22
27
}
23
28
24
- private boolean [][] fillGrid (final int [] array ) {
29
+ private BeadState [][] fillGrid (final int [] array ) {
25
30
final var maxValue = Arrays .stream (array ).max ().orElse (0 );
26
31
var grid = getEmptyGrid (array .length , maxValue );
27
32
28
33
int [] count = new int [maxValue ];
29
34
for (int i = 0 , arrayLength = array .length ; i < arrayLength ; i ++) {
30
35
int k = 0 ;
31
36
for (int j = 0 ; j < array [i ]; j ++) {
32
- grid [count [maxValue - k - 1 ]++][k ] = true ;
37
+ grid [count [maxValue - k - 1 ]++][k ] = BeadState . BEAD ;
33
38
k ++;
34
39
}
35
40
}
36
41
return grid ;
37
42
}
38
43
39
- private boolean [][] getEmptyGrid (final int arrayLength , final int maxValue ) {
40
- boolean [][] grid = new boolean [arrayLength ][maxValue ];
44
+ private BeadState [][] getEmptyGrid (final int arrayLength , final int maxValue ) {
45
+ BeadState [][] grid = new BeadState [arrayLength ][maxValue ];
41
46
for (int i = 0 ; i < arrayLength ; i ++) {
42
47
for (int j = 0 ; j < maxValue ; j ++) {
43
- grid [i ][j ] = false ;
48
+ grid [i ][j ] = BeadState . EMPTY ;
44
49
}
45
50
}
46
51
47
52
return grid ;
48
53
}
49
54
50
- private int [] extractSortedFromGrid (final boolean [][] grid ) {
55
+ private int [] extractSortedFromGrid (final BeadState [][] grid ) {
51
56
int [] sorted = new int [grid .length ];
52
57
for (int i = 0 ; i < grid .length ; i ++) {
53
58
int k = 0 ;
54
- for (int j = 0 ; j < grid [grid .length - 1 - i ].length && grid [grid .length - 1 - i ][j ]; j ++) {
59
+ for (int j = 0 ; j < grid [grid .length - 1 - i ].length && grid [grid .length - 1 - i ][j ]. equals ( BeadState . BEAD ) ; j ++) {
55
60
k ++;
56
61
}
57
62
sorted [i ] = k ;
0 commit comments