ФІО = GVA Запитання:/* Тема: Методи сортування Завдання: Розробити програму сортування методом Шелла Програма повинна забезпечувати введення чи генерацію вихідних даних і візуалізувати результати сортування. */ #include #include #define N 10 using namespace std; void autoentermas(int a[], size_t length) { randomize(); for (int i = 0 ; i < length ; i++) { a[i] = rand() % 40; } return ; } void printmas(int a[], size_t length) { for (int i = 0 ; i < length ; i++) { cout< 0 ? --s : 0;// возвращаем количество элементов в массиве } template void shellSort(T a[], long size) { // inc инкремент, расстояние между элементами сравнения // i и j стандартные переменные цикла // seq[40] массив, в котором хранятся инкременты long inc, i, j, seq[40]; int s;//количество элементов в массиве seq[40] // вычисление последовательности приращений s = increment(seq, size); while (s >= 0) { //извлекаем из массива очередную инкременту inc = seq[s--]; // сортировка вставками с инкрементами inc for (i = inc; i < size; i++) { T temp = a[i]; // сдвигаем элементы до тех пор, пока не дойдем до конца или не упорядочим в нужном порядке for (j = i-inc; (j >= 0) && (a[j] > temp); j -= inc) a[j+inc] = a[j]; // после всех сдвигов ставим на место j+inc элемент, который находился на i месте a[j+inc] = temp; printmas(a,size); } } } int main(){ int mas[N]; autoentermas(mas, N); cout<<"CURRENT -> "; printmas(mas,N); shellSort(mas,N); cout<<"RESULT -> "; printmas(mas,N); system("pause"); return 0; } ====================================