/* ** CS 14 - Spring 2003 ** LAB 6 - Sorting algorithms ** */ #include #include #include #include "simplearray.h" #include "sorting.h" // populate an array with random values template void fill_random( cs14::Array &a ) { for (int i = 0; i < a.length(); i++) { a[i] = (int) random(); } } //template // CALL SORTING ALGORITHMS void runSorting (int arraySize, int times, int algorithmFlag) { double totalTime = 0; double elapsed_iter = 0; for (int i = 0; i < times; i++) { // create array cs14::SimpleArray a(arraySize, 0); fill_random(a); // for measuring time clock_t start; clock_t finish; // start clock start = clock(); finish = clock(); double delay = (double)(finish - start); start = clock(); switch (algorithmFlag) { case 1: // BUBBLESORT cs14::bubbleSort (a); break; case 2: // SMART BUBBLESORT cs14::bubbleSmart (a); break; case 3: // SELECTION cs14::selection (a); break; case 4: // INSERTION cs14::insertion (a); break; } // for measuring time finish = clock(); elapsed_iter = (double)(finish - start); elapsed_iter -= delay; // add to totalTime totalTime += elapsed_iter; } // print result printf("%5d %13d %13.3f\n", algorithmFlag, arraySize, (float)totalTime/times); } int main () { // output header std::cout << "Algorithm Array size Average time\n"; // run sorting algorithms // (input size, how many times, algorithm code) // 1: BUBBLESORT // 2: SMART BUBBLESORT // 3: SELECTION // 4: INSERTION runSorting (100, 5, 1); runSorting (200, 5, 1); runSorting (500, 5, 1); runSorting (1000, 5, 1); runSorting (2000, 5, 1); runSorting (4000, 5, 1); runSorting (100, 5, 2); runSorting (200, 5, 2); runSorting (500, 5, 2); runSorting (1000, 5, 2); runSorting (2000, 5, 2); runSorting (4000, 5, 2); runSorting (100, 5, 3); runSorting (200, 5, 3); runSorting (500, 5, 3); runSorting (1000, 5, 3); runSorting (2000, 5, 3); runSorting (4000, 5, 3); runSorting (100, 5, 4); runSorting (200, 5, 4); runSorting (500, 5, 4); runSorting (1000, 5, 4); runSorting (2000, 5, 4); runSorting (4000, 5, 4); return 0; }