#include #include #include #include using namespace std; void InsertionSort(vector & A); void FillVector(vector & A, size_t size); void PrintVector(const vector & A); bool CheckVector(const vector & A, const vector & B); const int SIZE{100'000}; int main() { vector A; vector B; FillVector(A, SIZE); B = A; //PrintVector(A); InsertionSort(A); //PrintVector(A); if(CheckVector(A,B)) { cout << "No errors found, the sort was good " << endl; } return 0; } bool CheckVector(const vector & A, const vector & B){ bool ok{true}; for(auto x: B) { if (find(A.begin(), A.end(), x) == A.end()) { cerr << x << " is in the original but not in the sorted list" << endl; ok = false; } } for(int i =1; i A[i]) { cerr << A[i-1] << " and " << A[i] << " are out of order " << endl; ok = false; } } return ok; } void InsertionSort(vector & A) { for(int j = 1; j < A.size(); ++j) { int key = A[j]; int i = j-1; while (i >= 0 and A[i] > key) { A[i+1] = A[i]; --i; } A[i+1] = key; } } void PrintVector(const vector & A){ cout << A[0]; for(int i =1; i < A.size(); ++i) { cout << ", " << A[i]; } cout << endl; } void FillVector(vector & A, size_t size){ A.clear(); random_device rd; mt19937 gen(rd()); uniform_int_distribution distrib(1,100'000); for(int i = 0; i < size; ++i) { A.push_back(distrib(gen)); } }