#include #include #include #include // for lower_bound and is_sorted #include // for random number generation #include // for timing using namespace std; void insertIntoVector(vector& vec, int n) { minstd_rand generator; uniform_int_distribution distribution(1, n); for (int i = 0; i < n; ++i) { int value = distribution(generator); auto position = lower_bound(vec.begin(), vec.end(), value); vec.insert(position, value); } if (!is_sorted(vec.begin(), vec.end())) cout << "Warning: Vector is not sorted!\n"; } void insertIntoList(list& lst, int n) { minstd_rand generator; uniform_int_distribution distribution(1, n); for (int i = 0; i < n; ++i) { int value = distribution(generator); auto position = find_if(lst.begin(), lst.end(), [value](int x){ return x >= value; }); lst.insert(position, value); } vector tmp(lst.begin(), lst.end()); if (!is_sorted(tmp.begin(), tmp.end())) cout << "Warning: List is not sorted!\n"; } double measureVector(int n) { vector vec(n); for (int i = 0; i < n; ++i) vec[i] = i + 1; auto start = chrono::high_resolution_clock::now(); insertIntoVector(vec, n); auto end = chrono::high_resolution_clock::now(); chrono::duration elapsed = end - start; cout << "Vector final size: " << vec.size() << ", is_sorted: " << boolalpha << is_sorted(vec.begin(), vec.end()) << endl; return elapsed.count(); } double measureList(int n) { list lst; for (int i = 1; i <= n; ++i) lst.push_back(i); auto start = chrono::high_resolution_clock::now(); insertIntoList(lst, n); auto end = chrono::high_resolution_clock::now(); chrono::duration elapsed = end - start; vector tmp(lst.begin(), lst.end()); cout << "List final size: " << lst.size() << ", is_sorted: " << boolalpha << is_sorted(tmp.begin(), tmp.end()) << endl; return elapsed.count(); } int main() { int testSizes[] = {1000, 5000, 10000}; for (int i = 0; i < 3; ++i) { int n = testSizes[i]; cout << "--- n = " << n << " ---" << endl; double timeVec = measureVector(n); double timeList = measureList(n); cout << "Vector time: " << timeVec << " seconds" << endl; cout << "List time: " << timeList << " seconds" << endl; cout << endl; } return 0; }