{
int i, m, vector_min, vector_max, temp;
time_t t;// текущее время для инициализации
// генератора случайных чисел
srand((unsigned) time(&t));// инициализация генератора
// случайных чисел
printf("\nВведите нижнюю границу:");
scanf(“%d”, &vector_min);
printf("\nВведите верхнюю границу:");
scanf(“%d”, &vector_max);
printf("\nВведите размер вектора:");
scanf(“%d”, &n);
int vector[n];
printf("\nИсходный вектор:\n");
m = vector_max–vector_min + 1;
for (i=0; i<n; i++)
{
// получение случайного числа в диапазоне
// от vector_min до vector_max
vector[i]=rand()% m + vector_min;
printf(" %5d", vector[i]);
}
printf("\n");
for (m=n-2; m>=0 ;m--)
for (i=0; i<=m ;i++)
if (vector[i] > vector[i+1])
{
temp=vector[i];
vector[i]=vector[i+1];
vector[i+1]=temp;
}
printf("\nОтсортированный вектор:\n");
for (i=0; i<n; i++)
{
printf(" %5d", vector[i]);
}
printf("\n");
return 0;
}
3. Рассортировать элементы заданного случайным образом целочисленного вектора vector[n] методом Шелла (обменная сортировка с убывающим шагом).
В этом случае массив делится на группы по два элемента и производится сортировка в каждой группе: максимальный элемент ставится на второе место. После этого массив делится на группы по четыре элемента, и они снова сортируются. Количество элементов в сортируемой группе удваивается до тех пор, пока не остается одна группа, включающая все элементы массива, которая и сортируется окончательно:
#include <stdio.h>
#include <conio.h>
#include <math.h>
#include <time.h>