对数器:验证算法正确性
public class SortLogarithmicDetector {
private static final int DEFAULT_ARR_LENGTH = 3000 ;
private static final int RANDOM_BOUND = 5000 ;
public static void main ( String[ ] args) {
int [ ] randomArr = getRandomArr ( getRandomLength ( ) ) ;
System. out. println ( check ( randomArr) ) ;
System. out. println ( "++" + Arrays. toString ( randomArr) ) ;
}
public static int getRandomLength ( ) {
return ( int ) ( Math. random ( ) * 2 ) + DEFAULT_ARR_LENGTH;
}
public static int [ ] getRandomArr ( int length) {
int [ ] arr = new int [ length] ;
for ( int i = 0 ; i < length; i++ ) {
arr[ i] = ( int ) ( Math. random ( ) * RANDOM_BOUND) ;
}
return arr;
}
public static boolean check ( int [ ] arr) {
int arrLength = arr. length;
int [ ] target = new int [ arrLength] ;
System. arraycopy ( arr, 0 , target, 0 , arrLength) ;
Arrays. sort ( arr) ;
SelectionSort. sort2 ( target) ;
System. out. println ( "--" + Arrays. toString ( target) ) ;
boolean isTrue = true ;
for ( int i = 0 ; i < arrLength; i++ ) {
if ( arr[ i] != target[ i] ) {
System. out. println ( "arr=" + arr[ i] ) ;
System. out. println ( "target=" + target[ i] ) ;
isTrue = false ;
}
}
return isTrue;
}
}