@@ -539,10 +539,12 @@ public void scramble(int i, int j, RandomGenerator r) {
539
539
if (i == j ) {
540
540
return ;
541
541
}
542
- int k = j ;
542
+ int k ;
543
543
if (i > j ) {
544
544
k = i ;
545
545
i = j ;
546
+ } else {
547
+ k = j ;
546
548
}
547
549
boolean changed = false ;
548
550
for (; k > i + 1 ; k --) {
@@ -745,22 +747,20 @@ public void swapBlocks(int a, int b, int i, int j) {
745
747
// blocks are adjacent
746
748
removeAndInsert (i , j - i + 1 , a );
747
749
} else {
748
- int [] temp = new int [j - a + 1 ];
750
+ int [] temp = new int [j - b ];
749
751
int k = j - i + 1 ;
750
752
System .arraycopy (permutation , i , temp , 0 , k );
751
753
int m = i - b - 1 ;
752
754
System .arraycopy (permutation , b + 1 , temp , k , m );
753
- System .arraycopy (permutation , a , temp , k + m , b - a + 1 );
755
+ System .arraycopy (permutation , a , permutation , a + temp . length , b - a + 1 );
754
756
System .arraycopy (temp , 0 , permutation , a , temp .length );
755
757
hashCodeIsCached = false ;
756
758
}
757
759
}
758
760
759
761
/** Reverses the order of the elements in the permutation. */
760
762
public void reverse () {
761
- for (int i = 0 , j = permutation .length - 1 ; i < j ; i ++, j --) {
762
- internalSwap (i , j );
763
- }
763
+ internalReverse (0 , permutation .length - 1 );
764
764
hashCodeIsCached = false ;
765
765
}
766
766
@@ -774,13 +774,9 @@ public void reverse() {
774
774
*/
775
775
public void reverse (int i , int j ) {
776
776
if (i > j ) {
777
- for (; i > j ; i --, j ++) {
778
- internalSwap (i , j );
779
- }
777
+ internalReverse (j , i );
780
778
} else {
781
- for (; i < j ; i ++, j --) {
782
- internalSwap (i , j );
783
- }
779
+ internalReverse (i , j );
784
780
}
785
781
hashCodeIsCached = false ;
786
782
}
@@ -957,6 +953,12 @@ private boolean validate(int[] p) {
957
953
return true ;
958
954
}
959
955
956
+ private void internalReverse (int i , int j ) {
957
+ for (; i < j ; i ++, j --) {
958
+ internalSwap (i , j );
959
+ }
960
+ }
961
+
960
962
/*
961
963
* Use internally, such as from reverse, etc to avoid
962
964
* repeatedly invalidating hashCode cache (as well as from
0 commit comments