#include #include #include #include #include #include #include #include "json.hpp" //#include "timealgorithms.h" #include "insertionsort.h" #include "mergesort.h" int main(int argc, char* argv[]) { // read JSON file and store in jsonObject std::ifstream file; file.open(argv[1]); nlohmann::json jsonObject; // Store the contents filename into jsonObject if (file.is_open()) { file >> jsonObject; } // initialize array for JSON data //int n = jsonObject["metadata"]["arraySize"]; std::vector* sampleArray = new std::vector(); // initialize timer time_t timer; // initialize insertion sort variables int *insReturnArray; double insStartTime; double insTime; // initialize merge sort variables int *mergeReturnArray; double merStartTime; double merTime; //double merTime; // initialize quick sort variables //int quickComparisonCounter; //int quickMemAccessCounter; //double quickTime; std::string sampleName; // Sample key name to iterate for (auto itr = jsonObject.begin(); itr != jsonObject.end(); ++itr) { sampleName = itr.key(); //int arrayElement = 0; if (sampleName != "metadata") { for (auto arrayItr = jsonObject[sampleName].begin(); arrayItr != jsonObject[sampleName].end(); ++arrayItr) { //sampleArray[arrayElement] = *arrayItr; //sampleArray.push_back(*arrayItr); sampleArray -> push_back(*arrayItr); //arrayElement++; } } } for (auto const &element: *sampleArray){ std::cout << element << ' ' << std::endl; } // insertion sort evaluation insStartTime = time(0); insReturnArray = InsertionSort(sampleArray); insTime = time(0) - insStartTime; std::cout << "insertion sort comparison counter: " << *insReturnArray << std::endl; std::cout << "insertion sort memory access counter: " << *(insReturnArray + 1) << std::endl; std::cout << "wallclock time for insertion sort: " << insTime << std::endl; // merge sort evaluation merStartTime = time(0); mergeReturnArray = MergeSort(sampleArray); merTime = time(0) - merStartTime; std::cout << "insertion sort comparison counter: " << *mergeReturnArray << std::endl; std::cout << "insertion sort memory access counter: " << *(mergeReturnArray + 1) << std::endl; std::cout << "wallclock time for insertion sort: " << merTime << std::endl; //QuickSort(*underlyingSampleArray, *insComparisonCounter, *insMemAccessCounter); // initiate CSV file to which data will be written //std::ofstream theFile; //theFile.open("timingalgorithms.csv"); //theFile << "Sample,InsertionSortTime,InsertionSortCompares,InsertionSortMemaccess,MergeSortTime,MergeSortCompares,MergeSortMemaccess,QuickSortTime,QuickSortCompares,QuickSortMemaccess,\n"; //theFile.close(); file.close(); return 0; }