Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <cstdlib>
- #include <ctime>
- int * generate(int* n)
- {
- int * arr = (int *)malloc((*n) * sizeof(int));
- for (int i = 0; i < *n; ++i)
- {
- arr[i] = rand();
- }
- return arr;
- }
- void ins_sort(int* arr, int k, int n)
- {
- int x = 0, q = 0;
- for (int i = 0; i < k; i++)
- {
- for (int j = i; j < n; j += k)
- {
- x = arr[j];
- for (q = j - k; q >= 0 && arr[q] > x; q -= k)
- arr[q + k] = arr[q];
- arr[q + k] = x;
- }
- }
- }
- void shell_sort(int* arr, int n)
- {
- int i = n / 2;
- while (i >= 1)
- {
- ins_sort(arr, i, n);
- i /= 2;
- }
- }
- int main()
- {
- srand(time(NULL));
- int N = 0, t = 0;
- scanf("%i", &N);
- int* arr = generate(&N);
- shell_sort(arr, N);
- for (int i = 1; i < N; i++)
- {
- if (arr[i - 1] > arr[i])
- {
- printf("ERROR %d %d\n", arr[i - 1], arr[i]);
- t++;
- }
- }
- if (!t)
- {
- printf("OK\n");
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment