#include int shellSort(int arr[], int n) { // Сортировка Шелла for (int gap = n/2; gap > 0; gap /= 2) { // Выполнение промежуточной сортировки вставками. for (int i = gap; i < n; i += 1) { // Сохраняем элемент arr[i] во временной переменной temp, // чтобы на этой позиции можно было оставить "отверстие". int temp = arr[i]; // Передвигаем ранее отсортированные элементы выше, // пока не будет найдена правильная позиция для a[i] int j; // Объявляем j здесь, т.к. позже еще будет нужна for (j = i; j >= gap && arr[j - gap] > temp; j -= gap) { // Сдвигаем ранее отсортированные элементы. // "Отверстие" позволяет это сделать. arr[j] = arr[j - gap]; } // Помещаем сохраненный элемент в его правильную позицию arr[j] = temp; } } return 0; } int main() { int arr[] = {12, 11, 13, 5, 6}; int n = sizeof(arr) / sizeof(arr[0]); shellSort(arr, n); for (int i = 0; i < n; i++) { std::cout << arr[i] << " "; } std::cout << std::endl; }