Как сделать сортировку по средне-арифметическому

В задании указано что нужно сделать сортировку. Сам код я написал, как сделать сортировку?

Суть задачи:

Рассчитать значения 12-ти элементов массива Y по формуле y(i) = i^2-2i+19.3cosi Вывести на экран этот массив и новый, разместив в нем первоначально элементы, значения которых меньше среднего арифметического, а потом остальные, не меняя их последовательности.

#include <iostream>

#include <cmath>

using namespace std;

int main()
{
int const N = 12;
int p = 0;
double Y[N], X[N], avg = 0., eps = 1.e-9;

for (int i = 0; i < N; i++)
{
    Y[i] = i * i - 2. * i + 19.3 * cos(i);
    avg += Y[i];
    cout << Y[i] << " ";
}

avg /= 12.;

cout << "\naverage=" << avg << "\n";

for (int i = 0; i < N; i++)
    if (Y[i] < avg - eps) X[p++] = Y[i];

for (int i = 0; i < N; i++)
    if (Y[i] >= avg - eps) X[p++] = Y[i];

for (int i = 0; i < N; i++)
    cout << X[i] << " ";
cout << "\n";

system("pause");
return 0;
}

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

Автор решения: NIKITB
#include <iostream>
const int N = 12;
using namespace std;
int main()
{
    double* array1 = new double[N];
    double* array2 = new double[N];
    double* medium = 0; int p = N-1; int e = 0;
  
    for (int i = 0; i < N; i++)
    {
        array1[i] = ( (i * i) - (2 * i) + (19.3 * cos(i)) );
        *medium += array1[i];
        cout << array1[i] << endl;
    }

    cout << "\naverage=" << medium << "\n"<<endl;
    *medium /= 12;
   
    for (int i = 0; i < N; i++)
    {
        if (array1[i] < *medium)
        {
            array2[e++] = array1[i];
        }
    }

    for (int i = 0; i < N; i++)
    {
        if (array1[i] >= *medium)
        {
            array2[e++] = array1[i];
        }
    }delete[] array1; array1 = nullptr; delete medium;

    for (int i = 0; i < N; i++)
    {
        cout << array2[i]<<endl;
    }

    delete[] array2; array2 = nullptr;
    return 0;
}
→ Ссылка