/**
*
* @author Ognjen Savkovic (ognjen.savkovic@unibz.it)
*
* This class tests run times two methods: MaxSortShiftRight and MaxSortSwap
* defined in class ArrayUtility
*/
public class runTimeTestMaxSort {
public static void main(String[] args) {
// prints running times for MaxSortShiftRight and MaxSortSwap
compareMaxSortAlgs(); // for random arrays of sizes specified in RANDOM_ARRAY_SIZES
}
// sizes of random arrays that the class generate for testing
public static int [] RANDOM_ARRAY_SIZES = {10,10,100,100,1000,1000,10000,10000,100000,100000};
public static int[][] generateRandomArrays(){
int [][] randomArrays; // random arrays of size 10, 100, 100, ...
randomArrays = new int [RANDOM_ARRAY_SIZES.length][];
for(int i=0; i<RANDOM_ARRAY_SIZES.length; i++)
randomArrays[i] = ArrayUtility.createRandomArray(RANDOM_ARRAY_SIZES[i],1,RANDOM_ARRAY_SIZES[i]);
return randomArrays;
}
/**
* @param randomArrays random arrays of sizes in RANDOM_ARRAY_SIZES
* @return running times for maxSortShiftRight for arrays in randomArrays
*/
public static long [] runningTimeMaxSortShiftRight(int [][] randomArrays){
long [] runningTime; // sorting times for each size 10, 100, ...
long startTime; // start time
long estimatedTime; // current time - start times
runningTime = new long[RANDOM_ARRAY_SIZES.length];
for(int i=0; i<RANDOM_ARRAY_SIZES.length; i++){
startTime = System.nanoTime();
ArrayUtility.maxSortShiftRight(randomArrays[i]);
estimatedTime = System.nanoTime() - startTime;
runningTime[i] = estimatedTime;
}
return runningTime;
}
/**
* @param randomArrays random arrays of sizes in RANDOM_ARRAY_SIZES
* @return running times for maxSortSwap for arrays in randomArrays
*/
public static long [] runningTimeMaxSortSwap(int [][] randomArrays){
long [] runningTime; // sorting times for each size 10, 100, ...
long startTime; // start time
long estimatedTime; // current time - start times
runningTime = new long[RANDOM_ARRAY_SIZES.length];
for(int i=0; i<RANDOM_ARRAY_SIZES.length; i++){
startTime = System.nanoTime();
ArrayUtility.maxSortSwap(randomArrays[i]);
estimatedTime = System.nanoTime() - startTime;
runningTime[i] = estimatedTime;
}
return runningTime;
}
/**
* prints running times for MaxSortShiftRight and MaxSortSwap
*/
public static void compareMaxSortAlgs(){
int [][] randomArrays; // random arrays of size 10, 100, 100, ...
int [][] randomArraysCopy; // copy of randomArrays
randomArrays = generateRandomArrays();
randomArraysCopy = copyArrayOfArrays(randomArrays); // we need copy because MaxSort changes/sorts arrays
testArrayUtility.printLongArray("runningTimeMaxSortShiftRight()",runningTimeMaxSortShiftRight(randomArrays));
testArrayUtility.printLongArray("runningTimeMaxSortSwap()",runningTimeMaxSortSwap(randomArraysCopy));
}
/**
* @param arrayOfArrays
* @return return a deep-copy of arrayOfArrays
*/
public static int [] [] copyArrayOfArrays(int [][] arrayOfArrays){
int [] [] arrayOfArraysCopy;
arrayOfArraysCopy = new int[arrayOfArrays.length][]; // allocate space for a number of new arrays
for(int i=0; i < arrayOfArrays.length; i++)
arrayOfArraysCopy[i] = ArrayUtility.copyArray(arrayOfArrays[i]);
return arrayOfArraysCopy;
}
}