1

(4 відповідей, залишених у C++)

як тоді виглядає алгоритм плавного сортування? В інтернеті майже ніде не зміг знайти його реалізацію на c++

2

(4 відповідей, залишених у C++)

Чи все правильно з плавним алгоритмом сортування?
Або можно його якось покращити?

#define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN
#include <iostream>
#include "doctest.h"

using namespace std;

void SmoothSort(int* arr, int len) {
    int gap = 1, i, j;
    while (gap < len)
        gap = 3 * gap + 1;
    while (gap > 1) {
        gap /= 3;
        for (i = gap; i < len; i++) {
            j = i;
            while (j >= gap && arr[j - gap] > arr[j]) {
                swap(arr[j], arr[j - gap]);
                j -= gap;
            }
        }
        gap--;
    }
}

TEST_CASE("SmoothSort test 1") {
    int arr[] = { 5, 3, 2, 10, 6 };
    int n = (sizeof(arr) / sizeof(arr[0]));
    SmoothSort(arr, n);
    int expected[] = { 2, 3, 5, 6, 10 };
    for (size_t i = 0; i < n; i++)
        CHECK(arr[i] == expected[i]);
}

TEST_CASE("SmoothSort test 2") {
    int arr[] = { -3, -7, -2, -10, -6 };
    int n = (sizeof(arr) / sizeof(arr[0]));
    SmoothSort(arr, n);
    int expected[] = { -10, -7, -6, -3, -2 };
    for (size_t i = 0; i < n; i++)
        CHECK(arr[i] == expected[i]);
}

TEST_CASE("SmoothSort test 3") {
    int arr[] = { 5, 5, 5, 3, 3 };
    int n = (sizeof(arr) / sizeof(arr[0]));
    SmoothSort(arr, n);
    int expected[] = { 3, 3, 5, 5, 5 };
    for (size_t i = 0; i < n; i++)
        CHECK(arr[i] == expected[i]);
}

3

(6 відповідей, залишених у C++)

Ого, дякую за допомогу. Я попробую зробити

4

(6 відповідей, залишених у C++)

koala написав:

Функції ви ще не вивчали? І стандартну бібліотеку, зокрема вектори?

P.S. додав вам картинку як слід.
І код місцями не вирівняний.

вивчали але я хз як через функції зробити, вектори ще не вичали

5

(6 відповідей, залишених у C++)

https://replace.org.ua/extensions/om_images/img/63712fe24e7eb/photo-2022-11-13-19-35-03.jpg ось саме завдання
код https://onlinegdb.com/173QX_5lj