void generateRand_3(int array[], int arraySize) { Stopwatch stopWatch; int i; for (i=0; i<arraySize; i++) //fill array first { array[i] = i+1; } stopWatch.start(); for (i=1; i<arraySize; i++) //now randomly swap stuff { swap(array[i], array[ array[i] = (int)(rand()*rand() % arraySize) ]); } stopWatch.stop(); displayStats(arraySize, stopWatch.user(), stopWatch.user()/arraySize); }
void generateRand_1(int array[], int arraySize) { Stopwatch stopWatch; bool bad = false; //a flag for checking to see if a certain number was already in another element. stopWatch.start(); for (int i=0; i<arraySize; i++) { do { array[i] = (int)(rand()*rand() % arraySize); //Assign a random value to array[i] bad = false; //set bad flag to false for (int j=0; j<i; j++) //check each element up to current one { if ((int)array[i] == (int)array[j]) //if there is already one similar { bad = true; //make bad flag true. } } } while ( bad ); //keep assigning new numbers until it's not bad. } stopWatch.stop(); displayStats(arraySize, stopWatch.user(), stopWatch.user()/(arraySize * arraySize * log10(arraySize))); }
void generateRand_2(int array[], int arraySize) { Stopwatch stopWatch; int i; //for the loops bool used[arraySize]; //array to hold whether a number has been used for (i=0; i<arraySize; i++) { used[i] = false; } //initialize array for (i=0; i<arraySize; i++) { array[i] = (int)(rand()*rand() % arraySize); //Assign random value if ( i > 0 ) { //Check to see if that number was already used while ( used[ array[i] ] == true ) { array[i] = (int)(rand()*rand() % arraySize); } } used[ array[i] ] = true; } stopWatch.stop(); displayStats(arraySize, stopWatch.user(), stopWatch.user()/(arraySize * log10(arraySize))); }