Сортировать по росту отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах с++

Сортировать по росту отдельно элементы, стоящие на четных местах, и элементы, стоящие на нечетных местах. Я не могу понять как отсортировать элементы на нечетных местах. Помогите пожалуйста.

void Sort(int* parr, const int size)

{
        
    for (int i = 1; i < size; i++)
    {
        if ((i % 2) == 0)
        {
            int tmp = parr[i];
            int j = 0;
            while (tmp > parr[j])
                j++;
            for (int k = i - 1; k >= j; k--)
                parr[k + 1] = parr[k];
            parr[j] = tmp;
        }
    
    }
}

Ответы (1 шт):

Автор решения: Harry

Ну вот смотрите. Возьмем простейшую пузырьковую сортировку:

void swap(int&a, int&b)
{
    int t = a; a = b; b = t;
}

void BubbleSort(int * a, int n)
{
    for(int b = 0, e = n-1; b != e; ++b)
        for(int k = e, j = k--; j != b; j = k--)
            if (a[j] < a[k]) swap(a[j],a[k]);
}

А теперь будем идти с шагом 2 — только по первому, третьему и далее элементам (индексы 0, 2, ...):

void oddBubbleSort(int * a, int n)
{
    for(int b = 0, e = ((n-1)/2)*2; b != e; b+=2)
        for(int k = e-2, j = e; j != b; j = k, k -= 2)
            if (a[j] < a[k]) swap(a[j],a[k]);
}

Вот и все. Главное — правильно посчитать последний элемент :)

Надеюсь, теперь для четных напишете сами?

Пример работы — здесь: https://ideone.com/13CCDo

→ Ссылка