// CycleSort implementation adapted from: // https://www.geeksforgeeks.org/cycle-sorting/ // Note: This code is used to illustrate the utility of automated testing // for verification purposes, so it may not function correctly. This is // intentional. #include #include #include #include #include "json.hpp" #include using namespace std; // Function sort the array using Cycle sort void cycleSort (int arr[], int n) { // count number of memory writes int writes = 0; // traverse array elements and put it to on // the right place for (int cycle_start=0; cycle_start<=n-2; cycle_start++) { // initialize item as starting point int item = arr[cycle_start]; // Find position where we put the item. We basically // count all smaller elements on right side of item. int pos = cycle_start; for (int i = cycle_start+1; i> samples; } else { printf("Unable to open file %s\n", inputFilename.c_str()); return EXIT_FAILURE; } int n = samples["metadata"]["arraySize"]; int* sampleData = (int*) malloc(sizeof(int) * n); nlohmann::json result; result["metadata"] = samples["metadata"]; for (auto itr = samples.begin(); itr != samples.end(); ++itr) { if (itr.key() != "metadata") { auto sample = itr.value(); // InsertionSort std::copy(sample.begin(), sample.end(), sampleData); cycleSort(sampleData, n); for (int i = 0; i < n; i++) { result[itr.key()].push_back(sampleData[i]); } } } std::cout << result << '\n'; }