#define _CRT_SECURE_NO_WARNINGS #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; template class heap { public: int size() { return n; } int top() { return h[0]; } bool empty() { return n == 0; } void push(T a) { h.push_back(a); SiftUp(n); n++; } void pop() { n--; swap(h[n], h[0]); h.pop_back(); SiftDown(0); } void clear() { h.clear(); n = 0; } T operator [] (int a) { return h[a]; } private: vector h; int n = 0; void SiftUp(int a) { while (a) { int p = (a - 1) / 2; if (h[p] > h[a]) swap(h[p], h[a]); else break; a--; a /= 2; } } void SiftDown(int a) { while (2 * a + 1 < n) { int l = 2 * a + 1, r = 2 * a + 2; if (r == n) { if (h[l] < h[a]) swap(h[l], h[a]); break; } else if (h[l] <= h[r]) { if (h[l] < h[a]) { swap(h[l], h[a]); a = l; } else break; } else if (h[r] < h[a]) { swap(h[r], h[a]); a = r; } else break; } } }; int randint() { return rand() * RAND_MAX + rand(); } const int len[4] = { 1e5, 1e6, 1e7, 1e8 }; int curt = 1; void bubblesort(int* l, int* r) { int sz = r - l; if (sz <= 1) return; bool b = true; while (b) { b = false; for (int* i = l; i + 1 < r; i++) { if (*i > *(i + 1)) { swap(*i, *(i + 1)); b = true; } } r--; } } void _bubblesort(vector &a, int l, int r) { int sz = r - l; if (sz <= 1) return; bool b = true; while (b) { b = false; for (int i = l; i < r - 1; i++) { if (a[i] > a[i + 1]) { swap(a[i], a[i + 1]); b = true; } } r--; } } void bubblesort(vector &a) { _bubblesort(a, 0, a.size()); } void shakersort(int* l, int* r) { int sz = r - l; if (sz <= 1) return; bool b = true; int* beg = l - 1; int* end = r - 1; while (b) { b = false; beg++; for (int* i = beg; i < end; i++) { if (*i > *(i + 1)) { swap(*i, *(i + 1)); b = true; } } if (!b) break; end--; for (int* i = end; i > beg; i--) { if (*i < *(i - 1)) { swap(*i, *(i - 1)); b = true; } } } } void _shakersort(vector &a, int l, int r) { int sz = r - l; if (sz <= 1) return; bool b = true; int beg = l - 1, end = r - 1; while (b) { b = false; beg++; for (int i = beg; i < end; i++) { if (a[i] > a[i + 1]) { swap(a[i], a[i + 1]); b = true; } } if (!b) break; end--; for (int i = end; i > beg; i--) { if (a[i] < a[i - 1]) { swap(a[i], a[i - 1]); b = true; } } } } void shakersort(vector &a) { _shakersort(a, 0, a.size()); } void insertionsort(int* l, int* r) { for (int *i = l + 1; i < r; i++) { int* j = i; while (j > l && *(j - 1) > *j) { swap(*(j - 1), *j); j--; } } } void _insertionsort(vector &a, int l, int r) { for (int i = l + 1; i < r; i++) { int j = i; while (j > l && a[j - 1] > a[j]) { swap(a[j - 1], a[j]); j--; } } } void insertionsort(vector &a) { _insertionsort(a, 0, a.size()); } void selectionsort(int* l, int* r) { for (int *i = l; i < r; i++) { int minz = *i, *ind = i; for (int *j = i + 1; j < r; j++) { if (*j < minz) minz = *j, ind = j; } swap(*i, *ind); } } void _selectionsort(vector &a, int l, int r) { for (int i = l; i < r; i++) { int minz = a[i], ind = i; for (int j = i + 1; j < r; j++) { if (minz > a[j]) minz = a[j], ind = j; } swap(a[i], a[ind]); } } void selectionsort(vector &a) { _selectionsort(a, 0, a.size()); } void gnomesort(int* l, int* r) { int *i = l; while (i < r) { if (i == l || *(i - 1) <= *i) i++; else swap(*(i - 1), *i), i--; } } void _gnomesort(vector &a, int l, int r) { int i = l; while (i < r) { if (i == l || a[i - 1] <= a[i]) i++; else swap(a[i - 1], a[i]), i--; } } void gnomesort(vector &a) { _gnomesort(a, 0, a.size()); } void combsort(int* l, int* r) { int sz = r - l; if (sz <= 1) return; double k = 1.2473309; int step = sz - 1; while (step > 1) { for (int* i = l; i + step < r; i++) { if (*i > *(i + step)) swap(*i, *(i + step)); } step /= k; } bool b = true; while (b) { b = false; for (int* i = l; i + 1 < r; i++) { if (*i > *(i + 1)) { swap(*i, *(i + 1)); b = true; } } } } void _combsort(vector &a, int l, int r) { int sz = r - l; if (sz <= 1) return; double k = 1.2473309; int step = r - l - 1; while (step > 1) { for (int i = l; i + step < r; i++) { if (a[i] > a[i + step]) swap(a[i], a[i + step]); } step /= k; } bool b = true; while (b) { b = false; for (int i = l; i < r - 1; i++) { if (a[i] > a[i + 1]) { swap(a[i], a[i + 1]); b = true; } } } } void combsort(vector &a) { _combsort(a, 0, a.size()); } void shellsort(int* l, int* r) { int sz = r - l; int step = sz / 2; while (step >= 1) { for (int *i = l + step; i < r; i++) { int *j = i; int *diff = j - step; while (diff >= l && *diff > *j) { swap(*diff, *j); j = diff; diff = j - step; } } step /= 2; } } void _shellsort(vector &a, int l, int r) { int n = r - l; int step = n / 2; while (step >= 1) { for (int i = l + step; i < r; i++) { int j = i, diff = j - step; while (diff >= l && a[diff] > a[j]) { swap(a[diff], a[j]); j = diff; diff = j - step; } } step /= 2; } } void shellsort(vector &a) { _shellsort(a, 0, a.size()); } void shellsorthib(int* l, int* r) { int sz = r - l; if (sz <= 1) return; int step = 1; while (step < sz) step <<= 1; step >>= 1; step--; while (step >= 1) { for (int *i = l + step; i < r; i++) { int *j = i; int *diff = j - step; while (diff >= l && *diff > *j) { swap(*diff, *j); j = diff; diff = j - step; } } step /= 2; } } void _shellsorthib(vector &a, int l, int r) { int n = r - l; int step = 1; while (step < n) step <<= 1; step >>= 1; while (step >= 1) { for (int i = l + step; i < r; i++) { int j = i, diff = j - step; while (diff >= l && a[diff] > a[j]) { swap(a[diff], a[j]); j = diff; diff = j - step; } } step /= 2; } } void shellsorthib(vector &a) { _shellsorthib(a, 0, a.size()); } int steps[100]; void shellsortsedgwick(int* l, int* r) { int sz = r - l; steps[0] = 1; int q = 1; while (steps[q - 1] * 3 < sz) { if (q % 2 == 0) steps[q] = 9 * (1 << q) - 9 * (1 << (q / 2)) + 1; else steps[q] = 8 * (1 << q) - 6 * (1 << ((q + 1) / 2)) + 1; q++; } q--; for (; q >= 0; q--) { int step = steps[q]; for (int *i = l + step; i < r; i++) { int *j = i; int *diff = j - step; while (diff >= l && *diff > *j) { swap(*diff, *j); j = diff; diff = j - step; } } } } void _shellsortsedgwick(vector &a, int l, int r) { int n = r - l; vector steps; steps.push_back(1); int q = 1; while (steps.back() * 3 < n) { if (q % 2 == 0) steps.push_back(9 * (1 << q) - 9 * (1 << (q / 2)) + 1); else steps.push_back(8 * (1 << q) - 6 * (1 << ((q + 1) / 2)) + 1); q++; } for (int q = steps.size() - 1; q >= 0; q--) { int step = steps[q]; for (int i = l + step; i < r; i++) { int j = i, diff = j - step; while (diff >= l && a[diff] > a[j]) { swap(a[diff], a[j]); j = diff; diff = j - step; } } } } void shellsortsedgwick(vector &a) { _shellsortsedgwick(a, 0, a.size()); } void shellsortpratt(int* l, int* r) { int sz = r - l; steps[0] = 1; int cur = 1, q = 1; for (int i = 1; i < sz; i++) { int cur = 1 << i; if (cur > sz / 2) break; for (int j = 1; j < sz; j++) { cur *= 3; if (cur > sz / 2) break; steps[q++] = cur; } } insertionsort(steps, steps + q); q--; for (; q >= 0; q--) { int step = steps[q]; for (int *i = l + step; i < r; i++) { int *j = i; int *diff = j - step; while (diff >= l && *diff > *j) { swap(*diff, *j); j = diff; diff = j - step; } } } } void _shellsortpratt(vector &a, int l, int r) { int n = r - l; vector steps; steps.push_back(1); int cur = 1; for (int i = 1; i < n; i++) { int cur = 1 << i; if (cur > n / 2) break; for (int j = 1; j < n; j++) { cur *= 3; if (cur > n / 2) break; steps.push_back(cur); } } sort(steps.begin(), steps.end()); for (int q = steps.size() - 1; q >= 0; q--) { int step = steps[q]; for (int i = l + step; i < r; i++) { int j = i, diff = j - step; while (diff >= l && a[diff] > a[j]) { swap(a[diff], a[j]); j = diff; diff = j - step; } } } } void shellsortpratt(vector &a) { _shellsortpratt(a, 0, a.size()); } void myshell1(int* l, int* r) { int sz = r - l, q = 1; steps[0] = 1; while (steps[q - 1] < sz) { int s = steps[q - 1]; steps[q++] = s * 4 + s / 4; } q--; for (; q >= 0; q--) { int step = steps[q]; for (int *i = l + step; i < r; i++) { int *j = i; int *diff = j - step; while (diff >= l && *diff > *j) { swap(*diff, *j); j = diff; diff = j - step; } } } } void _myshell1(vector &a, int l, int r) { int n = r - l; vector steps; steps.push_back(1); while (steps.back() < n) { int s = steps.back(); steps.push_back(s * 4 + s / 4); } for (int q = steps.size() - 1; q >= 0; q--) { int step = steps[q]; for (int i = l + step; i < r; i++) { int j = i, diff = j - step; while (diff >= l && a[diff] > a[j]) { swap(a[diff], a[j]); j = diff; diff = j - step; } } } } void myshell1(vector &a) { _myshell1(a, 0, a.size()); } void myshell2(int* l, int* r) { int sz = r - l, q = 1; steps[0] = 1; while (steps[q - 1] < sz) { int s = steps[q - 1]; steps[q++] = s * 3 + s / 3; } q--; for (; q >= 0; q--) { int step = steps[q]; for (int *i = l + step; i < r; i++) { int *j = i; int *diff = j - step; while (diff >= l && *diff > *j) { swap(*diff, *j); j = diff; diff = j - step; } } } } void _myshell2(vector &a, int l, int r) { int n = r - l; vector steps; steps.push_back(1); while (steps.back() < n) { int s = steps.back(); steps.push_back(s * 3 + s / 3); } for (int q = steps.size() - 1; q >= 0; q--) { int step = steps[q]; for (int i = l + step; i < r; i++) { int j = i, diff = j - step; while (diff >= l && a[diff] > a[j]) { swap(a[diff], a[j]); j = diff; diff = j - step; } } } } void myshell2(vector &a) { _myshell2(a, 0, a.size()); } void myshell3(int* l, int* r) { int sz = r - l, q = 1; steps[0] = 1; while (steps[q - 1] < sz) { int s = steps[q - 1]; steps[q++] = s * 4 - s / 5; } q--; for (; q >= 0; q--) { int step = steps[q]; for (int *i = l + step; i < r; i++) { int *j = i; int *diff = j - step; while (diff >= l && *diff > *j) { swap(*diff, *j); j = diff; diff = j - step; } } } } void _myshell3(vector &a, int l, int r) { int n = r - l; vector steps; steps.push_back(1); while (steps.back() < n) { int s = steps.back(); steps.push_back(s * 4 - s / 5); } for (int q = steps.size() - 1; q >= 0; q--) { int step = steps[q]; for (int i = l + step; i < r; i++) { int j = i, diff = j - step; while (diff >= l && a[diff] > a[j]) { swap(a[diff], a[j]); j = diff; diff = j - step; } } } } void myshell3(vector &a) { _myshell3(a, 0, a.size()); } void quicksort(int* l, int* r) { if (r - l <= 1) return; int z = *(l + (r - l) / 2); int* ll = l, *rr = r - 1; while (ll <= rr) { while (*ll < z) ll++; while (*rr > z) rr--; if (ll <= rr) { swap(*ll, *rr); ll++; rr--; } } if (l < rr) quicksort(l, rr + 1); if (ll < r) quicksort(ll, r); } void _quicksort(vector &a, int l, int r) { if (r - l <= 1) return; int z = a[(l + r) / 2]; int ll = l, rr = r - 1; while (ll <= rr) { while (a[ll] < z) ll++; while (a[rr] > z) rr--; if (ll <= rr) swap(a[ll++], a[rr--]); } if (l < rr) _quicksort(a, l, rr + 1); if (ll < r) _quicksort(a, ll, r); } void quicksort(vector &a) { _quicksort(a, 0, a.size()); } void quickinssort(int* l, int* r) { if (r - l <= 32) { insertionsort(l, r); return; } int z = *(l + (r - l) / 2); int* ll = l, *rr = r - 1; while (ll <= rr) { while (*ll < z) ll++; while (*rr > z) rr--; if (ll <= rr) { swap(*ll, *rr); ll++; rr--; } } if (l < rr) quickinssort(l, rr + 1); if (ll < r) quickinssort(ll, r); } void _quickinssort(vector &a, int l, int r) { if (r - l <= 32) { _insertionsort(a, l, r); return; } int z = a[(l + r) / 2]; int ll = l, rr = r - 1; while (ll <= rr) { while (a[ll] < z) ll++; while (a[rr] > z) rr--; if (ll <= rr) swap(a[ll++], a[rr--]); } if (l < rr) _quickinssort(a, l, rr + 1); if (ll < r) _quickinssort(a, ll, r); } void quickinssort(vector &a) { _quickinssort(a, 0, a.size()); } void heapsort(int* l, int* r) { heap h; for (int *i = l; i < r; i++) h.push(*i); for (int *i = l; i < r; i++) { *i = h.top(); h.pop(); } } void _heapsort(vector &a, int l, int r) { heap h; for (int i = l; i < r; i++) h.push(a[i]); for (int i = l; i < r; i++) { a[i] = h.top(); h.pop(); } } void heapsort(vector &a) { _heapsort(a, 0, a.size()); } void merge(int* l, int* m, int* r, int* temp) { int *cl = l, *cr = m, cur = 0; while (cl < m && cr < r) { if (*cl < *cr) temp[cur++] = *cl, cl++; else temp[cur++] = *cr, cr++; } while (cl < m) temp[cur++] = *cl, cl++; while (cr < r) temp[cur++] = *cr, cr++; cur = 0; for (int* i = l; i < r; i++) *i = temp[cur++]; } void _mergesort(int* l, int* r, int* temp) { if (r - l <= 1) return; int *m = l + (r - l) / 2; _mergesort(l, m, temp); _mergesort(m, r, temp); merge(l, m, r, temp); } void mergesort(int* l, int* r) { int* temp = new int[r - l]; _mergesort(l, r, temp); delete temp; } void merge(vector &a, int l, int r, int* temp) { int m = (l + r) / 2; int cl = l, cr = m, cur = 0; while (cl < m && cr < r) { if (a[cl] < a[cr]) temp[cur++] = a[cl++]; else temp[cur++] = a[cr++]; } while (cl < m) temp[cur++] = a[cl++]; while (cr < r) temp[cur++] = a[cr++]; for (int i = 0; i < r - l; i++) a[i + l] = temp[i]; } void _mergesort(vector &a, int l, int r, int* temp) { if (l >= r - 1) return; int m = (l + r) / 2; _mergesort(a, l, m, temp); _mergesort(a, m, r, temp); merge(a, l, r, temp); } void mergesort(vector &a) { int* temp = new int[a.size()]; _mergesort(a, 0, a.size(), temp); delete temp; } void _mergeinssort(int* l, int* r, int* temp) { if (r - l <= 32) { insertionsort(l, r); return; } int *m = l + (r - l) / 2; _mergeinssort(l, m, temp); _mergeinssort(m, r, temp); merge(l, m, r, temp); } void mergeinssort(int* l, int* r) { int* temp = new int[r - l]; _mergeinssort(l, r, temp); delete temp; } void _mergeinssort(vector &a, int l, int r, int* temp) { if (r - l <= 64) { _insertionsort(a, l, r); return; } int m = (l + r) / 2; _mergeinssort(a, l, m, temp); _mergeinssort(a, m, r, temp); merge(a, l, r, temp); } void mergeinssort(vector &a) { int* temp = new int[a.size()]; _mergeinssort(a, 0, a.size(), temp); delete temp; } int digit(int n, int k, int N, int M) { return (n >> (N * k) & (M - 1)); } void _radixsort(int* l, int* r, int N) { int k = (32 + N - 1) / N; int M = 1 << N; int sz = r - l; int* b = new int[sz]; int* c = new int[M]; for (int i = 0; i < k; i++) { for (int j = 0; j < M; j++) c[j] = 0; for (int* j = l; j < r; j++) c[digit(*j, i, N, M)]++; for (int j = 1; j < M; j++) c[j] += c[j - 1]; for (int* j = r - 1; j >= l; j--) b[--c[digit(*j, i, N, M)]] = *j; int cur = 0; for (int* j = l; j < r; j++) *j = b[cur++]; } delete b; delete c; } void radixsort(int* l, int* r) { _radixsort(l, r, 8); } void _radixsort(vector &a, int N) { int k = (32 + N - 1) / N; int M = 1 << N; int n = a.size(); vector b(n); for (int i = 0; i < k; i++) { vector c(M); for (int j = 0; j < n; j++) c[digit(a[j], i, N, M)]++; for (int j = 1; j < M; j++) c[j] += c[j - 1]; for (int j = n - 1; j >= 0; j--) b[--c[digit(a[j], i, N, M)]] = a[j]; swap(a, b); } } void radixsort(vector &a) { _radixsort(a, 8); } void _radixsortmsd(int* l, int* r, int N, int d, int* temp) { if (d == -1) return; if (r - l <= 32) { insertionsort(l, r); return; } int M = 1 << N; int* cnt = new int[M + 1]; for (int i = 0; i <= M; i++) cnt[i] = 0; int cur = 0; for (int* i = l; i < r; i++) { temp[cur++] = *i; cnt[digit(*i, d, N, M) + 1]++; } int sz = 0; for (int i = 1; i <= M; i++) if (cnt[i]) sz++; int* run = new int[sz]; cur = 0; for (int i = 1; i <= M; i++) if (cnt[i]) run[cur++] = i - 1; for (int i = 1; i <= M; i++) cnt[i] += cnt[i - 1]; cur = 0; for (int *i = l; i < r; i++) { int ind = digit(temp[cur], d, N, M); *(l + cnt[ind]) = temp[cur]; cur++; cnt[ind]++; } for (int i = 0; i < sz; i++) { int r = run[i]; if (r != 0) _radixsortmsd(l + cnt[r - 1], l + cnt[r], N, d - 1, temp); else _radixsortmsd(l, l + cnt[r], N, d - 1, temp); } delete run; delete cnt; } void radixsortmsd(int* l, int* r) { int* temp = new int[r - l]; _radixsortmsd(l, r, 8, 3, temp); delete temp; } void _radixsortmsd(vector &a, int N, int d) { if (d == -1 || a.size() <= 1) return; if (a.size() <= 64) { insertionsort(a); return; } int k = (32 + N - 1) / N; int M = 1 << N; int n = a.size(); vector> c(M); for (int i = 0; i < n; i++) c[digit(a[i], d, N, M)].push_back(a[i]); for (int i = 0; i < M; i++) _radixsortmsd(c[i], N, d - 1); int cur = 0; for (int i = 0; i < M; i++) for (int j = 0; j < c[i].size(); j++) a[cur++] = c[i][j]; } void radixsortmsd(vector &a) { _radixsortmsd(a, 4, 7); } void _stlsort(vector &a, int l, int r) { sort(a.begin() + l, a.begin() + r); } void stlsort(vector &a) { sort(a.begin(), a.end()); } void _timsort(int* l, int* r, int* temp) { int sz = r - l; if (sz <= 64) { insertionsort(l, r); return; } int minrun = sz, f = 0; while (minrun >= 64) { f |= minrun & 1; minrun >>= 1; } minrun += f; int* cur = l; stack> s; while (cur < r) { int* c1 = cur; while (c1 < r - 1 && *c1 <= *(c1 + 1)) c1++; int* c2 = cur; while (c2 < r - 1 && *c2 >= *(c2 + 1)) c2++; if (c1 >= c2) { c1 = max(c1, cur + minrun - 1); c1 = min(c1, r - 1); insertionsort(cur, c1 + 1); s.push({ c1 - cur + 1, cur }); cur = c1 + 1; } else { c2 = max(c2, cur + minrun - 1); c2 = min(c2, r - 1); reverse(cur, c2 + 1); insertionsort(cur, c2 + 1); s.push({ c2 - cur + 1, cur }); cur = c2 + 1; } while (s.size() >= 3) { pair x = s.top(); s.pop(); pair y = s.top(); s.pop(); pair z = s.top(); s.pop(); if (z.first >= x.first + y.first && y.first >= x.first) { s.push(z); s.push(y); s.push(x); break; } else if (z.first >= x.first + y.first) { merge(y.second, x.second, x.second + x.first, temp); s.push(z); s.push({ x.first + y.first, y.second }); } else { merge(z.second, y.second, y.second + y.first, temp); s.push({ z.first + y.first, z.second }); s.push(x); } } } while (s.size() != 1) { pair x = s.top(); s.pop(); pair y = s.top(); s.pop(); if (x.second < y.second) swap(x, y); merge(y.second, x.second, x.second + x.first, temp); s.push({ y.first + x.first, y.second }); } } void timsort(int* l, int* r) { int* temp = new int[r - l]; _timsort(l, r, temp); delete temp; } void mergetim(vector &a, int l, int m, int r, int* temp) { int cl = l, cr = m, cur = 0; while (cl < m && cr < r) { if (a[cl] < a[cr]) temp[cur++] = a[cl++]; else temp[cur++] = a[cr++]; } while (cl < m) temp[cur++] = a[cl++]; while (cr < r) temp[cur++] = a[cr++]; for (int i = 0; i < r - l; i++) a[i + l] = temp[i]; } void _timsort(vector &a, int l, int r, int* temp) { int sz = r - l; if (sz <= 64) { _insertionsort(a, l, r); return; } int minrun = sz, f = 0; while (minrun >= 64) { f |= minrun & 1; minrun >>= 1; } minrun += f; int cur = l; stack> s; while (cur < r) { int c1 = cur; while (c1 < r - 1 && a[c1] <= a[c1 + 1]) c1++; int c2 = cur; while (c2 < r - 1 && a[c2] >= a[c2 + 1]) c2++; if (c1 >= c2) { c1 = max(c1, cur + minrun - 1); c1 = min(c1, r - 1); _insertionsort(a, cur, c1 + 1); s.push({ c1 - cur + 1, cur }); cur = c1 + 1; } else { c2 = max(c2, cur + minrun - 1); c2 = min(c2, r - 1); reverse(a.begin() + cur, a.begin() + c2 + 1); _insertionsort(a, cur, c2 + 1); s.push({ c2 - cur + 1, cur }); cur = c2 + 1; } while (s.size() >= 3) { pair x = s.top(); s.pop(); pair y = s.top(); s.pop(); pair z = s.top(); s.pop(); if (z.first >= x.first + y.first && y.first >= x.first) { s.push(z); s.push(y); s.push(x); break; } else if (z.first >= x.first + y.first) { mergetim(a, y.second, x.second, x.second + x.first, temp); s.push(z); s.push({ x.first + y.first, y.second }); } else { mergetim(a, z.second, y.second, y.second + y.first, temp); s.push({ z.first + y.first, z.second }); s.push(x); } } } while (s.size() != 1) { pair x = s.top(); s.pop(); pair y = s.top(); s.pop(); if (x.second < y.second) swap(x, y); mergetim(a, y.second, x.second, x.second + x.first, temp); s.push({ y.first + x.first, y.second }); } } void timsort(vector &a) { int* temp = new int[a.size()]; _timsort(a, 0, a.size(), temp); delete temp; } void bucketinssort(vector &a); void _bucketinssort(vector &a, int l, int r) { int sz = r - l; if (sz <= 128) { _insertionsort(a, l, r); return; } int minz = a[0], maxz = a[0]; for (int i = l; i < r; i++) { minz = min(minz, a[i]); maxz = max(maxz, a[i]); } int diff = maxz - minz + 1; if (diff == 1) return; int numbuckets; numbuckets = max(2, int(4 * log2(diff))); vector> buckets(numbuckets); int range = (diff + numbuckets - 1) / numbuckets; for (int i = l; i < r; i++) { int ind = (a[i] - minz) / range; buckets[ind].push_back(a[i]); } for (int i = 0; i < numbuckets; i++) bucketinssort(buckets[i]); int cur = l; for (int i = 0; i < numbuckets; i++) for (int j = 0; j < buckets[i].size(); j++) a[cur++] = buckets[i][j]; } void bucketinssort(vector &a) { _bucketinssort(a, 0, a.size()); } void bucketquicksort(vector &a); void _bucketquicksort(vector &a, int l, int r) { int sz = r - l; if (sz <= 10000) { _quicksort(a, l, r); return; } int minz = a[0], maxz = a[0]; for (int i = l; i < r; i++) { minz = min(minz, a[i]); maxz = max(maxz, a[i]); } int diff = maxz - minz + 1; if (diff == 1) return; int numbuckets; numbuckets = max(2, int(4 * log2(diff))); vector> buckets(numbuckets); int range = (diff + numbuckets - 1) / numbuckets; for (int i = l; i < r; i++) { int ind = (a[i] - minz) / range; buckets[ind].push_back(a[i]); } for (int i = 0; i < numbuckets; i++) bucketquicksort(buckets[i]); int cur = l; for (int i = 0; i < numbuckets; i++) for (int j = 0; j < buckets[i].size(); j++) a[cur++] = buckets[i][j]; } void bucketquicksort(vector &a) { _bucketquicksort(a, 0, a.size()); } void bucketquickinssort(vector &a); void _bucketquickinssort(vector &a, int l, int r) { int sz = r - l; if (sz <= 10000) { _quickinssort(a, l, r); return; } int minz = a[0], maxz = a[0]; for (int i = l; i < r; i++) { minz = min(minz, a[i]); maxz = max(maxz, a[i]); } int diff = maxz - minz + 1; if (diff == 1) return; int numbuckets; numbuckets = max(2, int(4 * log2(diff))); vector> buckets(numbuckets); int range = (diff + numbuckets - 1) / numbuckets; for (int i = l; i < r; i++) { int ind = (a[i] - minz) / range; buckets[ind].push_back(a[i]); } for (int i = 0; i < numbuckets; i++) bucketquickinssort(buckets[i]); int cur = l; for (int i = 0; i < numbuckets; i++) for (int j = 0; j < buckets[i].size(); j++) a[cur++] = buckets[i][j]; } void bucketquickinssort(vector &a) { _bucketquickinssort(a, 0, a.size()); } void _newbucketsort(int* l, int* r, int* temp) { if (r - l <= 64) { insertionsort(l, r); return; } int minz = *l, maxz = *l; bool is_sorted = true; for (int *i = l + 1; i < r; i++) { minz = min(minz, *i); maxz = max(maxz, *i); if (*i < *(i - 1)) is_sorted = false; } if (is_sorted) return; int diff = maxz - minz + 1; int numbuckets; if (r - l <= 1e7) numbuckets = 1500; else numbuckets = 3000; int range = (diff + numbuckets - 1) / numbuckets; int* cnt = new int[numbuckets + 1]; for (int i = 0; i <= numbuckets; i++) cnt[i] = 0; int cur = 0; for (int* i = l; i < r; i++) { temp[cur++] = *i; int ind = (*i - minz) / range; cnt[ind + 1]++; } int sz = 0; for (int i = 1; i <= numbuckets; i++) if (cnt[i]) sz++; int* run = new int[sz]; cur = 0; for (int i = 1; i <= numbuckets; i++) if (cnt[i]) run[cur++] = i - 1; for (int i = 1; i <= numbuckets; i++) cnt[i] += cnt[i - 1]; cur = 0; for (int *i = l; i < r; i++) { int ind = (temp[cur] - minz) / range; *(l + cnt[ind]) = temp[cur]; cur++; cnt[ind]++; } for (int i = 0; i < sz; i++) { int r = run[i]; if (r != 0) _newbucketsort(l + cnt[r - 1], l + cnt[r], temp); else _newbucketsort(l, l + cnt[r], temp); } delete run; delete cnt; } void newbucketsort(int* l, int* r) { int *temp = new int[r - l]; _newbucketsort(l, r, temp); delete temp; } void _newbucketsort(vector &a, int l, int r, int* temp) { if (r - l <= 64) { _insertionsort(a, l, r); return; } int minz = a[l], maxz = a[l]; bool is_sorted = true; for (int i = l + 1; i < r; i++) { minz = min(minz, a[i]); maxz = max(maxz, a[i]); if (a[i] < a[i - 1]) is_sorted = false; } if (is_sorted) return; int diff = maxz - minz + 1; int numbuckets = 1500; //numbuckets = min(diff, int(4.0 * log2(diff))); //numbuckets = min(diff, int(6.0 * log2(r - l))); //numbuckets = min(diff, min(int(4.0 * log2(diff)), // int(6.0 * log2(r - l)))); int range = (diff + numbuckets - 1) / numbuckets; vector cnt(numbuckets + 1); cnt[0] = l; for (int i = l; i < r; i++) { temp[i] = a[i]; int ind = (a[i] - minz) / range; cnt[ind + 1]++; } vector run; int sz = 0; for (int i = 1; i <= numbuckets; i++) if (cnt[i]) sz++; run.resize(sz); int cur = 0; for (int i = 1; i <= numbuckets; i++) if (cnt[i]) run[cur++] = i - 1; for (int i = 1; i <= numbuckets; i++) cnt[i] += cnt[i - 1]; for (int i = l; i < r; i++) { int ind = (temp[i] - minz) / range; a[cnt[ind]++] = temp[i]; } for (int i = 0; i < sz; i++) { int r = run[i]; if (r != 0) _newbucketsort(a, cnt[r - 1], cnt[r], temp); else _newbucketsort(a, l, cnt[r], temp); } } void newbucketsort(vector &a) { int *temp = new int[a.size()]; _newbucketsort(a, 0, a.size(), temp); delete temp; } void treesort(int* l, int* r) { multiset m; for (int *i = l; i < r; i++) m.insert(*i); for (int q : m) *l = q, l++; } void _treesort(vector &a, int l, int r) { multiset m; for (int i = l; i < r; i++) m.insert(a[i]); int cur = l; for (int q : m) a[cur++] = q; } void treesort(vector &a) { _treesort(a, 0, a.size()); } void bitseqsort(int* l, int* r, bool inv) { if (r - l <= 1) return; int *m = l + (r - l) / 2; for (int *i = l, *j = m; i < m && j < r; i++, j++) { if (inv ^ (*i > *j)) swap(*i, *j); } bitseqsort(l, m, inv); bitseqsort(m, r, inv); } void makebitonic(int* l, int* r) { if (r - l <= 1) return; int *m = l + (r - l) / 2; makebitonic(l, m); bitseqsort(l, m, 0); makebitonic(m, r); bitseqsort(m, r, 1); } void bitonicsort(int* l, int* r) { int n = 1; int inf = *max_element(l, r) + 1; while (n < r - l) n *= 2; int* a = new int[n]; int cur = 0; for (int *i = l; i < r; i++) a[cur++] = *i; while (cur < n) a[cur++] = inf; makebitonic(a, a + n); bitseqsort(a, a + n, 0); cur = 0; for (int *i = l; i < r; i++) *i = a[cur++]; delete a; } void bitseqsort(vector &a, int l, int r, bool inv) { if (l == r - 1) return; int m = (l + r) / 2; for (int i = l, j = m; i < m && j < r; i++, j++) { if (inv ^ (a[i] > a[j])) swap(a[i], a[j]); } bitseqsort(a, l, m, inv); bitseqsort(a, m, r, inv); } void makebitonic(vector &a, int l, int r) { if (r - l <= 1) return; int m = (l + r) / 2; makebitonic(a, l, m); bitseqsort(a, l, m, 0); makebitonic(a, m, r); bitseqsort(a, m, r, 1); } void bitonicsort(vector &a) { int n = 1; int inf = *max_element(a.begin(), a.end()) + 1; while (n < a.size()) n *= 2; a.resize(n, inf); makebitonic(a, 0, n); bitseqsort(a, 0, n, 0); while (a.back() == inf && !a.empty()) a.pop_back(); } /*void(*func1[5])(vector&) = { bubblesort, gnomesort, insertionsort, selectionsort, shakersort }; string names1[5] = { "bubblesort", "gnomesort", "insertionsort", "selectionsort", "shakersort" }; void(*func2[4])(vector&) = { bitonicsort, shellsorthib, shellsortpratt, treesort }; string names2[4] = { "bitonicsort", "shellsorthib", "shellsortpratt", "treesort" }; void(*func3[18])(vector&) = { combsort, bucketinssort, heapsort, stlsort, quicksort, quickinssort, mergesort, mergeinssort, shellsort, shellsortsedgwick, radixsort, radixsortmsd, timsort, myshell1, myshell2, myshell3, bucketquicksort, bucketquickinssort }; string names3[18] = { "combsort", "bucketinssort", "heapsort", "stlsort", "quicksort", "quickinssort", "mergesort", "mergeinssort", "shellsort", "shellsortsedgwick", "radixsort", "radixsortmsd", "timsort", "myshell1", "myshell2", "myshell3", "bucketquicksort", "bucketquickinssort" };*/ const int N = 100000000; int arr[N]; void testprint(int n, string section) { string s = section + "\\test" + to_string(curt) + ".txt"; freopen(s.c_str(), "w", stdout); printf("%d\n", n); for (int i = 0; i < n; i++) printf("%d ", arr[i]); fclose(stdout); curt++; } void testprint(vector &a, string section) { string s = section + "\\test" + to_string(curt) + ".txt"; freopen(s.c_str(), "w", stdout); int n = a.size(); printf("%d\n", n); for (int i = 0; i < n; i++) printf("%d ", a[i]); fclose(stdout); curt++; } void testgen1() { string section = "Random"; vector arr; for (int q = 0; q < 4; q++) { int n = len[q]; if (arr.size() != n) arr.resize(n); for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)10; testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1000; testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e5; testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e7; testprint(arr, section); } for (int w = 0; w < 10; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; testprint(arr, section); } } } void testgen2() { string section = "Part sorted"; vector arr; for (int q = 0; q < 4; q++) { int n = len[q]; if (arr.size() != n) arr.resize(n); for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; int cur = 0; while (cur < n) { int l = randint() % min((int)10, n - cur) + 1; sort(arr.begin() + cur, arr.begin() + cur + l); cur += l; } testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; int cur = 0; while (cur < n) { int l = randint() % min((int)100, n - cur) + 1; sort(arr.begin() + cur, arr.begin() + cur + l); cur += l; } testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; int cur = 0; while (cur < n) { int l = randint() % min((int)1000, n - cur) + 1; sort(arr.begin() + cur, arr.begin() + cur + l); cur += l; } testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; int cur = 0; while (cur < n) { int l = randint() % min((int)1e4, n - cur) + 1; sort(arr.begin() + cur, arr.begin() + cur + l); cur += l; } testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; int cur = 0; while (cur < n) { int l = randint() % min((int)1e5, n - cur) + 1; sort(arr.begin() + cur, arr.begin() + cur + l); cur += l; } testprint(arr, section); } if (n == 1e5) continue; for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; int cur = 0; while (cur < n) { int l = randint() % min((int)1e6, n - cur) + 1; sort(arr.begin() + cur, arr.begin() + cur + l); cur += l; } testprint(arr, section); } if (n == 1e6) continue; for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; int cur = 0; while (cur < n) { int l = randint() % min((int)1e7, n - cur) + 1; sort(arr.begin() + cur, arr.begin() + cur + l); cur += l; } testprint(arr, section); } if (n == 1e7) continue; for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; int cur = 0; while (cur < n) { int l = randint() % min((int)1e8, n - cur) + 1; sort(arr.begin() + cur, arr.begin() + cur + l); cur += l; } testprint(arr, section); } } } void testgen3() { string section = "Swaps"; vector arr; for (int q = 0; q < 4; q++) { int n = len[q]; if (arr.size() != n) arr.resize(n); for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; radixsort(arr); for (int d = 0; d < 10; d++) { int p1 = 1, p2 = 1; while (p1 == p2) { p1 = randint() % n; p2 = randint() % n; } swap(arr[p1], arr[p2]); } testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; radixsort(arr); for (int d = 0; d < 100; d++) { int p1 = 1, p2 = 1; while (p1 == p2) { p1 = randint() % n; p2 = randint() % n; } swap(arr[p1], arr[p2]); } testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; radixsort(arr); for (int d = 0; d < 1000; d++) { int p1 = 1, p2 = 1; while (p1 == p2) { p1 = randint() % n; p2 = randint() % n; } swap(arr[p1], arr[p2]); } testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; radixsort(arr); for (int d = 0; d < 10000; d++) { int p1 = 1, p2 = 1; while (p1 == p2) { p1 = randint() % n; p2 = randint() % n; } swap(arr[p1], arr[p2]); } testprint(arr, section); } for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; radixsort(arr); for (int d = 0; d < 1e5; d++) { int p1 = 1, p2 = 1; while (p1 == p2) { p1 = randint() % n; p2 = randint() % n; } swap(arr[p1], arr[p2]); } testprint(arr, section); } if (n == 1e5) continue; for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; radixsort(arr); for (int d = 0; d < 1e6; d++) { int p1 = 1, p2 = 1; while (p1 == p2) { p1 = randint() % n; p2 = randint() % n; } swap(arr[p1], arr[p2]); } testprint(arr, section); } if (n == 1e6) continue; for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; radixsort(arr); for (int d = 0; d < 1e7; d++) { int p1 = 1, p2 = 1; while (p1 == p2) { p1 = randint() % n; p2 = randint() % n; } swap(arr[p1], arr[p2]); } testprint(arr, section); } if (n == 1e7) continue; for (int w = 0; w < 5; w++) { for (int j = 0; j < n; j++) arr[j] = randint() % (int)1e9; radixsort(arr); for (int d = 0; d < 1e8; d++) { int p1 = 1, p2 = 1; while (p1 == p2) { p1 = randint() % n; p2 = randint() % n; } swap(arr[p1], arr[p2]); } testprint(arr, section); } } } void testgen4() { string section = "Additional"; for (int q = 0; q < 4; q++) { int n = len[q]; for (int i = 0; i < n; i++) arr[i] = i + 1; testprint(n, section); for (int i = 0; i < n; i++) arr[i] = n - i; testprint(n, section); for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = randint() % (int)1e9; radixsort(arr, arr + n); testprint(n, section); } for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = randint() % (int)1e9; radixsort(arr, arr + n); reverse(arr, arr + n); testprint(n, section); } for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = i + 1; for (int i = 0; i < 10; i++) { int pos = randint() % n; int v = randint() % (int)1e9; arr[pos] = v; } testprint(n, section); } for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = i + 1; for (int i = 0; i < 100; i++) { int pos = randint() % n; int v = randint() % (int)1e9; arr[pos] = v; } testprint(n, section); } for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = i + 1; for (int i = 0; i < 1000; i++) { int pos = randint() % n; int v = randint() % (int)1e9; arr[pos] = v; } testprint(n, section); } for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = i + 1; for (int i = 0; i < 1e4; i++) { int pos = randint() % n; int v = randint() % (int)1e9; arr[pos] = v; } testprint(n, section); } for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = i + 1; for (int i = 0; i < 1e5; i++) { int pos = randint() % n; int v = randint() % (int)1e9; arr[pos] = v; } testprint(n, section); } if (n > 1e5) { for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = i + 1; for (int i = 0; i < 1e6; i++) { int pos = randint() % n; int v = randint() % (int)1e9; arr[pos] = v; } testprint(n, section); } if (n > 1e6) { for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = i + 1; for (int i = 0; i < 1e7; i++) { int pos = randint() % n; int v = randint() % (int)1e9; arr[pos] = v; } testprint(n, section); } if (n > 1e7) { for (int w = 0; w < 2; w++) { for (int i = 0; i < n; i++) arr[i] = i + 1; for (int i = 0; i < 1e8; i++) { int pos = randint() % n; int v = randint() % (int)1e9; arr[pos] = v; } testprint(n, section); } } } } for (int w = 0; w < 3; w++) { int repeat = randint() % (int)1e9; int nn = n / 10; for (int i = 0; i < nn; i++) arr[i] = repeat; for (int i = nn; i < n; i++) arr[i] = randint() % (int)1e9; random_shuffle(arr, arr + n); testprint(n, section); } for (int w = 0; w < 3; w++) { int repeat = randint() % (int)1e9; int nn = n / 4; for (int i = 0; i < nn; i++) arr[i] = repeat; for (int i = nn; i < n; i++) arr[i] = randint() % (int)1e9; random_shuffle(arr, arr + n); testprint(n, section); } for (int w = 0; w < 3; w++) { int repeat = randint() % (int)1e9; int nn = n / 2; for (int i = 0; i < nn; i++) arr[i] = repeat; for (int i = nn; i < n; i++) arr[i] = randint() % (int)1e9; random_shuffle(arr, arr + n); testprint(n, section); } for (int w = 0; w < 3; w++) { int repeat = randint() % (int)1e9; int nn = 3 * n / 4; for (int i = 0; i < nn; i++) arr[i] = repeat; for (int i = nn; i < n; i++) arr[i] = randint() % (int)1e9; random_shuffle(arr, arr + n); testprint(n, section); } for (int w = 0; w < 3; w++) { int repeat = randint() % (int)1e9; int nn = 9 * n / 10; for (int i = 0; i < nn; i++) arr[i] = repeat; for (int i = nn; i < n; i++) arr[i] = randint() % (int)1e9; random_shuffle(arr, arr + n); testprint(n, section); } } } int cur[N]; int ans[N]; int made[N]; int read(string &test) { freopen(test.c_str(), "r", stdin); int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &cur[i]); for (int i = 0; i < n; i++) ans[i] = cur[i]; fclose(stdin); radixsort(ans, ans + n); return n; } bool check(int n) { bool right = true; for (int i = 0; i < n; i++) if (ans[i] != made[i]) right = false; return right; } bool fasttest(string section, int num) { string s = section + "\\test" + to_string(num) + ".txt"; freopen(s.c_str(), "r", stdin); int n; scanf("%d", &n); for (int i = 0; i < n; i++) scanf("%d", &cur[i]); for (int i = 0; i < n; i++) ans[i] = cur[i]; radixsort(ans, ans + n); int t1, t2; for (int run = 0; run < 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergesort(made, made + n); t2 = clock(); if (check(n)) cout << t2 - t1 << " "; else { cout << "incorrect"; return false; } } return true; } void fasttestpart() { string output; output = "Results\\shellsorthibr1e6.txt"; freopen(output.c_str(), "w", stdout); for (int t = 31; t <= 60; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); shellsorthib(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\shellsorthibr1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 61; t <= 90; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); shellsorthib(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\shellsorthibp1e6.txt"; freopen(output.c_str(), "w", stdout); for (int t = 26; t <= 55; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); shellsorthib(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\shellsorthibp1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); shellsorthib(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\shellsorthibs1e6.txt"; freopen(output.c_str(), "w", stdout); for (int t = 26; t <= 55; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); shellsorthib(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\shellsorthibs1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); shellsorthib(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\shellsorthiba1e6.txt"; freopen(output.c_str(), "w", stdout); for (int t = 32; t <= 64; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); shellsorthib(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\shellsorthiba1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 65; t <= 99; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); shellsorthib(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); } void exttest() { string output; output = "Results\\Random\\combsort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 61; t <= 90; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); combsort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Random\\quicksort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 61; t <= 90; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quicksort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Random\\quickinssort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 61; t <= 90; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quickinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Random\\mergeinssort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 61; t <= 90; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); mergeinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Random\\radixsortmsd1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 61; t <= 90; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); radixsortmsd(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Random\\quicksort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 120; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quicksort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Random\\quickinssort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 120; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quickinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Random\\mergeinssort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 120; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); mergeinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Random\\radixsortmsd1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 120; t++) { int n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); radixsortmsd(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Part sorted\\quicksort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quicksort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Part sorted\\quickinssort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quickinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Part sorted\\mergeinssort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); mergeinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Part sorted\\radixsortmsd1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); radixsortmsd(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Part sorted\\quicksort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 130; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quicksort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Part sorted\\quickinssort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 130; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quickinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Part sorted\\mergeinssort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 130; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); mergeinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Part sorted\\radixsortmsd1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 130; t++) { int n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); radixsortmsd(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Swaps\\quicksort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quicksort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Swaps\\quickinssort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quickinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Swaps\\mergeinssort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); mergeinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Swaps\\radixsortmsd1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 56; t <= 90; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); radixsortmsd(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Swaps\\quicksort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 130; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quicksort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Swaps\\quickinssort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 130; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quickinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Swaps\\mergeinssort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 130; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); mergeinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Swaps\\radixsortmsd1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 91; t <= 130; t++) { int n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); radixsortmsd(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Additional\\combsort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 65; t <= 99; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); combsort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Additional\\quicksort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 65; t <= 99; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quicksort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Additional\\quickinssort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 65; t <= 99; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quickinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Additional\\mergeinssort1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 65; t <= 99; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); mergeinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Additional\\radixsortmsd1e7.txt"; freopen(output.c_str(), "w", stdout); for (int t = 65; t <= 99; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); radixsortmsd(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Additional\\quicksort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 100; t <= 136; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quicksort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Additional\\quickinssort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 100; t <= 136; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); quickinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Additional\\mergeinssort1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 100; t <= 136; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); mergeinssort(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); output = "Results\\Additional\\radixsortmsd1e8.txt"; freopen(output.c_str(), "w", stdout); for (int t = 100; t <= 136; t++) { int n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; int t1 = clock(); radixsortmsd(made, made + n); int t2 = clock(); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); } } fclose(stdout); } void fulltest1() { // Random // 1 - 30 : 10^5 // 31 - 60 : 10^6 // 61 - 90 : 10^7 // 91 - 120 : 10^8 string input, output; int n, t1, t2; for (int t = 1; t <= 30; t++) { n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bubblesort(made, made + n); t2 = clock(); output = "Results\\Random\\bubblesort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shakersort(made, made + n); t2 = clock(); output = "Results\\Random\\shakersort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); selectionsort(made, made + n); t2 = clock(); output = "Results\\Random\\selectionsort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); insertionsort(made, made + n); t2 = clock(); output = "Results\\Random\\insertionsort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); gnomesort(made, made + n); t2 = clock(); output = "Results\\Random\\gnomesort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 31; t <= 60; t++) { n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bitonicsort(made, made + n); t2 = clock(); output = "Results\\Random\\bitonicsort1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); treesort(made, made + n); t2 = clock(); output = "Results\\Random\\treesort1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsorthib(made, made + n); t2 = clock(); output = "Results\\Random\\shellsorthib1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortpratt(made, made + n); t2 = clock(); output = "Results\\Random\\shellsortpratt1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 61; t <= 90; t++) { n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bitonicsort(made, made + n); t2 = clock(); output = "Results\\Random\\bitonicsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); treesort(made, made + n); t2 = clock(); output = "Results\\Random\\treesort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsorthib(made, made + n); t2 = clock(); output = "Results\\Random\\shellsorthib1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortpratt(made, made + n); t2 = clock(); output = "Results\\Random\\shellsortpratt1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 61; t <= 90; t++) { n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); combsort(made, made + n); t2 = clock(); output = "Results\\Random\\combsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); newbucketsort(made, made + n); t2 = clock(); output = "Results\\Random\\bucketsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); heapsort(made, made + n); t2 = clock(); output = "Results\\Random\\heapsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); sort(made, made + n); t2 = clock(); output = "Results\\Random\\stlsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quicksort(made, made + n); t2 = clock(); output = "Results\\Random\\quicksort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quickinssort(made, made + n); t2 = clock(); output = "Results\\Random\\quickinssort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergesort(made, made + n); t2 = clock(); output = "Results\\Random\\mergesort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergeinssort(made, made + n); t2 = clock(); output = "Results\\Random\\mergeinssort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsort(made, made + n); t2 = clock(); output = "Results\\Random\\shellsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortsedgwick(made, made + n); t2 = clock(); output = "Results\\Random\\shellsortsedgwick1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); radixsort(made, made + n); t2 = clock(); output = "Results\\Random\\radixsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); timsort(made, made + n); t2 = clock(); output = "Results\\Random\\timsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell1(made, made + n); t2 = clock(); output = "Results\\Random\\myshell1_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell2(made, made + n); t2 = clock(); output = "Results\\Random\\myshell2_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell3(made, made + n); t2 = clock(); output = "Results\\Random\\myshell3_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 91; t <= 120; t++) { n = read("Random\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); combsort(made, made + n); t2 = clock(); output = "Results\\Random\\combsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); newbucketsort(made, made + n); t2 = clock(); output = "Results\\Random\\bucketsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); heapsort(made, made + n); t2 = clock(); output = "Results\\Random\\heapsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); sort(made, made + n); t2 = clock(); output = "Results\\Random\\stlsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quicksort(made, made + n); t2 = clock(); output = "Results\\Random\\quicksort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quickinssort(made, made + n); t2 = clock(); output = "Results\\Random\\quickinssort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergesort(made, made + n); t2 = clock(); output = "Results\\Random\\mergesort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergeinssort(made, made + n); t2 = clock(); output = "Results\\Random\\mergeinssort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsort(made, made + n); t2 = clock(); output = "Results\\Random\\shellsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortsedgwick(made, made + n); t2 = clock(); output = "Results\\Random\\shellsortsedgwick1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); radixsort(made, made + n); t2 = clock(); output = "Results\\Random\\radixsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); timsort(made, made + n); t2 = clock(); output = "Results\\Random\\timsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell1(made, made + n); t2 = clock(); output = "Results\\Random\\myshell1_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell2(made, made + n); t2 = clock(); output = "Results\\Random\\myshell2_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell3(made, made + n); t2 = clock(); output = "Results\\Random\\myshell3_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } } void fulltest2() { // Part sorted // 1 - 25 : 10^5 // 26 - 55 : 10^6 // 56 - 90 : 10^7 // 91 - 130 : 10^8 string input, output; int n, t1, t2; for (int t = 1; t <= 25; t++) { n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bubblesort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\bubblesort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shakersort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\shakersort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); selectionsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\selectionsort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); insertionsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\insertionsort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); gnomesort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\gnomesort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 26; t <= 55; t++) { n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bitonicsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\bitonicsort1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); treesort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\treesort1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsorthib(made, made + n); t2 = clock(); output = "Results\\Part sorted\\shellsorthib1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortpratt(made, made + n); t2 = clock(); output = "Results\\Part sorted\\shellsortpratt1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 56; t <= 90; t++) { n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bitonicsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\bitonicsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); treesort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\treesort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsorthib(made, made + n); t2 = clock(); output = "Results\\Part sorted\\shellsorthib1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortpratt(made, made + n); t2 = clock(); output = "Results\\Part sorted\\shellsortpratt1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 56; t <= 90; t++) { n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); combsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\combsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); newbucketsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\bucketsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); heapsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\heapsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); sort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\stlsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quicksort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\quicksort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quickinssort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\quickinssort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergesort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\mergesort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergeinssort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\mergeinssort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\shellsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortsedgwick(made, made + n); t2 = clock(); output = "Results\\Part sorted\\shellsortsedgwick1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); radixsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\radixsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); timsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\timsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell1(made, made + n); t2 = clock(); output = "Results\\Part sorted\\myshell1_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell2(made, made + n); t2 = clock(); output = "Results\\Part sorted\\myshell2_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell3(made, made + n); t2 = clock(); output = "Results\\Part sorted\\myshell3_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 91; t <= 130; t++) { n = read("Part sorted\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); combsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\combsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); newbucketsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\bucketsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); heapsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\heapsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); sort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\stlsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quicksort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\quicksort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quickinssort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\quickinssort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergesort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\mergesort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergeinssort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\mergeinssort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\shellsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortsedgwick(made, made + n); t2 = clock(); output = "Results\\Part sorted\\shellsortsedgwick1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); radixsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\radixsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); timsort(made, made + n); t2 = clock(); output = "Results\\Part sorted\\timsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell1(made, made + n); t2 = clock(); output = "Results\\Part sorted\\myshell1_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell2(made, made + n); t2 = clock(); output = "Results\\Part sorted\\myshell2_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell3(made, made + n); t2 = clock(); output = "Results\\Part sorted\\myshell3_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } } void fulltest3() { // Swaps // 1 - 25 : 10^5 // 26 - 55 : 10^6 // 56 - 90 : 10^7 // 91 - 130 : 10^8 string input, output; int n, t1, t2; for (int t = 1; t <= 25; t++) { n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bubblesort(made, made + n); t2 = clock(); output = "Results\\Swaps\\bubblesort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shakersort(made, made + n); t2 = clock(); output = "Results\\Swaps\\shakersort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); selectionsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\selectionsort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); insertionsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\insertionsort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); gnomesort(made, made + n); t2 = clock(); output = "Results\\Swaps\\gnomesort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 26; t <= 55; t++) { n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bitonicsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\bitonicsort1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); treesort(made, made + n); t2 = clock(); output = "Results\\Swaps\\treesort1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsorthib(made, made + n); t2 = clock(); output = "Results\\Swaps\\shellsorthib1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortpratt(made, made + n); t2 = clock(); output = "Results\\Swaps\\shellsortpratt1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 56; t <= 90; t++) { n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bitonicsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\bitonicsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); treesort(made, made + n); t2 = clock(); output = "Results\\Swaps\\treesort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsorthib(made, made + n); t2 = clock(); output = "Results\\Swaps\\shellsorthib1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortpratt(made, made + n); t2 = clock(); output = "Results\\Swaps\\shellsortpratt1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 56; t <= 90; t++) { n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); combsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\combsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); newbucketsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\bucketsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); heapsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\heapsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); sort(made, made + n); t2 = clock(); output = "Results\\Swaps\\stlsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quicksort(made, made + n); t2 = clock(); output = "Results\\Swaps\\quicksort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quickinssort(made, made + n); t2 = clock(); output = "Results\\Swaps\\quickinssort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergesort(made, made + n); t2 = clock(); output = "Results\\Swaps\\mergesort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergeinssort(made, made + n); t2 = clock(); output = "Results\\Swaps\\mergeinssort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\shellsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortsedgwick(made, made + n); t2 = clock(); output = "Results\\Swaps\\shellsortsedgwick1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); radixsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\radixsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); timsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\timsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell1(made, made + n); t2 = clock(); output = "Results\\Swaps\\myshell1_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell2(made, made + n); t2 = clock(); output = "Results\\Swaps\\myshell2_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell3(made, made + n); t2 = clock(); output = "Results\\Swaps\\myshell3_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 91; t <= 130; t++) { n = read("Swaps\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); combsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\combsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); newbucketsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\bucketsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); heapsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\heapsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); sort(made, made + n); t2 = clock(); output = "Results\\Swaps\\stlsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quicksort(made, made + n); t2 = clock(); output = "Results\\Swaps\\quicksort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quickinssort(made, made + n); t2 = clock(); output = "Results\\Swaps\\quickinssort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergesort(made, made + n); t2 = clock(); output = "Results\\Swaps\\mergesort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergeinssort(made, made + n); t2 = clock(); output = "Results\\Swaps\\mergeinssort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\shellsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortsedgwick(made, made + n); t2 = clock(); output = "Results\\Swaps\\shellsortsedgwick1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); radixsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\radixsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); timsort(made, made + n); t2 = clock(); output = "Results\\Swaps\\timsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell1(made, made + n); t2 = clock(); output = "Results\\Swaps\\myshell1_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell2(made, made + n); t2 = clock(); output = "Results\\Swaps\\myshell2_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell3(made, made + n); t2 = clock(); output = "Results\\Swaps\\myshell3_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } } void fulltest4() { // Additional // 1 - 31 : 10^5 // 32 - 64 : 10^6 // 65 - 99 : 10^7 // 100 - 136 : 10^8 string input, output; int n, t1, t2; for (int t = 1; t <= 31; t++) { n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bubblesort(made, made + n); t2 = clock(); output = "Results\\Additional\\bubblesort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shakersort(made, made + n); t2 = clock(); output = "Results\\Additional\\shakersort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); selectionsort(made, made + n); t2 = clock(); output = "Results\\Additional\\selectionsort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); insertionsort(made, made + n); t2 = clock(); output = "Results\\Additional\\insertionsort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); gnomesort(made, made + n); t2 = clock(); output = "Results\\Additional\\gnomesort1e5.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 32; t <= 64; t++) { n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bitonicsort(made, made + n); t2 = clock(); output = "Results\\Additional\\bitonicsort1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); treesort(made, made + n); t2 = clock(); output = "Results\\Additional\\treesort1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsorthib(made, made + n); t2 = clock(); output = "Results\\Additional\\shellsorthib1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortpratt(made, made + n); t2 = clock(); output = "Results\\Additional\\shellsortpratt1e6.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 65; t <= 99; t++) { n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); bitonicsort(made, made + n); t2 = clock(); output = "Results\\Additional\\bitonicsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); treesort(made, made + n); t2 = clock(); output = "Results\\Additional\\treesort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsorthib(made, made + n); t2 = clock(); output = "Results\\Additional\\shellsorthib1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortpratt(made, made + n); t2 = clock(); output = "Results\\Additional\\shellsortpratt1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 65; t <= 99; t++) { n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); combsort(made, made + n); t2 = clock(); output = "Results\\Random\\combsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); newbucketsort(made, made + n); t2 = clock(); output = "Results\\Additional\\bucketsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); heapsort(made, made + n); t2 = clock(); output = "Results\\Additional\\heapsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); sort(made, made + n); t2 = clock(); output = "Results\\Additional\\stlsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quicksort(made, made + n); t2 = clock(); output = "Results\\Additional\\quicksort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quickinssort(made, made + n); t2 = clock(); output = "Results\\Additional\\quickinssort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergesort(made, made + n); t2 = clock(); output = "Results\\Additional\\mergesort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergeinssort(made, made + n); t2 = clock(); output = "Results\\Additional\\mergeinssort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsort(made, made + n); t2 = clock(); output = "Results\\Additional\\shellsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortsedgwick(made, made + n); t2 = clock(); output = "Results\\Additional\\shellsortsedgwick1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); radixsort(made, made + n); t2 = clock(); output = "Results\\Additional\\radixsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); timsort(made, made + n); t2 = clock(); output = "Results\\Additional\\timsort1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell1(made, made + n); t2 = clock(); output = "Results\\Additional\\myshell1_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell2(made, made + n); t2 = clock(); output = "Results\\Additional\\myshell2_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell3(made, made + n); t2 = clock(); output = "Results\\Additional\\myshell3_1e7.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } for (int t = 100; t <= 136; t++) { n = read("Additional\\test" + to_string(t) + ".txt"); for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); combsort(made, made + n); t2 = clock(); output = "Results\\Additional\\combsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); newbucketsort(made, made + n); t2 = clock(); output = "Results\\Additional\\bucketsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); heapsort(made, made + n); t2 = clock(); output = "Results\\Additional\\heapsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); sort(made, made + n); t2 = clock(); output = "Results\\Additional\\stlsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quicksort(made, made + n); t2 = clock(); output = "Results\\Additional\\quicksort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); quickinssort(made, made + n); t2 = clock(); output = "Results\\Additional\\quickinssort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergesort(made, made + n); t2 = clock(); output = "Results\\Additional\\mergesort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); mergeinssort(made, made + n); t2 = clock(); output = "Results\\Additional\\mergeinssort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsort(made, made + n); t2 = clock(); output = "Results\\Additional\\shellsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); shellsortsedgwick(made, made + n); t2 = clock(); output = "Results\\Additional\\shellsortsedgwick1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); radixsort(made, made + n); t2 = clock(); output = "Results\\Additional\\radixsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); timsort(made, made + n); t2 = clock(); output = "Results\\Additional\\timsort1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell1(made, made + n); t2 = clock(); output = "Results\\Additional\\myshell1_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell2(made, made + n); t2 = clock(); output = "Results\\Additional\\myshell2_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } for (int run = 1; run <= 20; run++) { for (int i = 0; i < n; i++) made[i] = cur[i]; t1 = clock(); myshell3(made, made + n); t2 = clock(); output = "Results\\Additional\\myshell3_1e8.txt"; freopen(output.c_str(), "a", stdout); if (!check(n)) printf("incorrect"); else printf("%d", t2 - t1); if (run != 20) printf(" "); else printf("\n"); fclose(stdout); } } } int main() { srand(time(0)); //fulltest4(); //fulltest1(); //fulltest2(); //fulltest3(); }