Изначально задача заключалась была просто написать программу для сортировки введенных (или случайно сгенерированных) чисел с помощью метода Шелла. Но тогда учитель решил усложнить задачу и сказал:
«Создайте другую функцию, которая будет проверять алгоритм Shell: создать множество массивов из n случайных чисел, отсортировать по методу Шелла и отобразить среднее количество итераций для всех этих массивов»
У меня получилось все, кроме среднего значения для всех массивов. Как это сделать?
Это мой код:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void shellsort(int v[], int n);
int main() {
	int SIZE;
	printf("Input SIZE: ");
	scanf_s("%d", &SIZE);
	int N;
	printf("Input N: ");
	scanf_s("%d", &N);
	int* a = (int*)malloc(SIZE * sizeof(int));
	int i = 0, num = 0;
	while (num != N) {
		printf("-------------------------------");
		printf("\n");
		printf("Enter masiv: ");
		for (i = 0; i < SIZE; i++) {
			a[i] = rand() % 100;
			printf("%d ", a[i]);
		}
		shellsort(a, SIZE);
		printf("\n");
		printf("Result: ");
		for (i = 0; i < SIZE; i++) {
			printf("%d ", a[i]);
		}
		printf("\n");
		num++;
	}
	return 0;
}
void shellsort(int v[], int n) {
	int k, i, j, gap, temp;
	int iterations = 0;
	for (gap = n / 2; gap > 0; gap /= 2) {
		for (i = gap; i < n; i++) {
			for (j = i - gap; j >= 0 && v[j] > v[j + gap]; j -= gap)
			{
				temp = v[j];
				v[j] = v[j + gap];
				v[j + gap] = temp;
				iterations++;
			}
		}
	}
	printf("\n");
	printf("Number of iterations: %d\n", iterations);
}