Преподаватель сказал, что строка for (int j = i - step; j >= 0; j = j - step)
портит всю суть сортировки Шелла и сказал переделать таким образом, чтобы использовать в функции Сортировку вставками. Как это можно осуществить?
/*Перестановка элементов местами*/
template < typename T >
void swap(T* arr, int j, int step)
{
T value = arr[j];
arr[j] = arr[j + step];
arr[j + step] = value;
}
/*Сортировка элементов масссива*/
template < typename T >
void shell_sort(T* arr, int length)
{
for (int step = length / 2; step > 0; step = step / 2) // Расстояние между элементами
{
for (int i = step; i < length; i++) // Проходим по массиву
{
for (int j = i - step; j >= 0; j = j - step) // Проходим по элементам массива
{
if (arr[j] > arr[j + step]) // Сравниваем элементы
{
swap(arr, j, step); // Меняем элементы местами
}
}
}
}
}
Правильный ли такой код:
/*Сортировка элементов масссива*/
template < typename T >
void shell_sort(T* arr, int length)
{
for (int step = length / 2; step > 0; step = step / 2) // Расстояние между элементами
{
insertion_sort(step, length, arr);
}
}
/*Сортировка вставками элементов масссива*/
template < typename T >
void insertion_sort(int step, int length, T* arr)
{
for (int i = step; i < length; i++) // Проходим по массиву
{
for (int j = i - step; j >= 0 && arr[j] > arr[j + step]; j -= step) // Проходим по элементам массива
{
swap(arr, j, step); // Меняем элементы местами
}
}
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Здравствуйте, подскажите, пожалуйста, как установить Parallel STL на Ubuntu 1604 пробовал по инструкциям от сюда https://software