106 / 106 / 58
Регистрация: 04.03.2013
Сообщений: 479
1

Сортировка массива относительно его среднего арифметического

09.09.2014, 14:48. Показов 2604. Ответов 2
Метки нет (Все метки)

Задача: Сортировка разделением. Способ разделения: вычислить среднее арифметическое всех элементов массива и относительно этого значения разбить массив на две части (с использованием вспомогательных массивов).

Вот что у меня получилось: сортировка относительно центрального эл-та массива. Помогите, пожалуйста, изменить ф-цию сортировки, что бы массивы (а потом и подмассивы) сортировались относительно ср. арифметического.
Ф-ция ср. арифметического
C++
1
2
3
4
5
6
7
8
9
double avg(int values[])
{
    
    for(int i=0; i<n; i++){
        sum += values[i];}
 
    double average = (double) sum / n;
    return average;
}
Ф-ция сортировки с вызовом avg
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
void quickSort(int l, int r)
{   int temp;
// int x = A[l + (r - l) / 2]; нахождение ср. эл-та массива и сортировка относительно него
//  вместо этого, необходимо находить ср. арифметическое каждого подмассива
    double x = avg(A);
 
 
    int i = l;
    int j = r;
    //код в while обычно выносят в процедуру particle
    while(i <= j)
    {
        while(A[i] < x) i++;
        while(A[j] > x) j--;
        if(i <= j)
        {
         //   swap(A[i], A[j]);
            temp=A[i]; A[i]=A[j]; A[j]=temp;
            i++;
            j--;
        }
    }
    if (i<r)
                quickSort(i, r);
   
    if (l<j)   
        quickSort(l, j);}
Главная ф-ция
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int i,n;
static const int Max_A = 30;
static const int Min_A = -30;
        void main(){
cout<<"Размерность массива";
cin>>n;
                int rnd_div = Max_A - Min_A + 1;
                int rnd_diff = Max_A;
                for(i=0;i<n;++i){
                    
                    A[i]=rand()%rnd_div - rnd_diff;
                    cout>>"A[i]+" ";}
                
              quickSort(0, n-1);
             
             for(i=0;i<n;++i){                    
                 cout>>"A[i]+" ";}}
Я вот попробовал добавить ф-цию ср. арифм. и вызывать ее из ф-ции сортировки, но постоянные ошибки
StackOverFlowException.

Добавлено через 6 минут
Я нахожу значение, а мне нужно индекс эл-та наиболее близкого к ср. арифметического массива (потом и подмассива). Помогите, как это сделать?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
09.09.2014, 14:48
Ответы с готовыми решениями:

Вывести на экран элементы массива, которые больше среднего арифметического всех его элементов
Ребят помогите пожалуйста решить два массива, а то мне трудно они даються=) 1)Дан массив А из N...

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

Получить новый массив, как разность между элементами исходного массива и его среднего арифметического с++
Дан массив А ( 2.2,1.9,2.4,1.7,2.5,1,8,2.1,1.6 } . Найти среднее арифметическое значение элементов...

Подсчёт среднего арифметического из массива
#include &lt;iostream&gt; #include &lt;cstdlib&gt; #include &lt;windows.h&gt; using namespace std; /*____Описание...

2
0 / 0 / 1
Регистрация: 20.11.2013
Сообщений: 17
10.09.2014, 02:20 2
C++
1
2
3
4
5
6
7
double avg(int values[], int n) // values - массив n - сколько элементов в массиве
{
int sum;
   for(int i(0); i < n; i++)
      sum += values[i];
return (double)sum / n;
}
Ф-ция ср. арифметического.
0
106 / 106 / 58
Регистрация: 04.03.2013
Сообщений: 479
10.09.2014, 11:52  [ТС] 3
В подмассиве каждый раз новое кол-во элементов, Эта ф-ция этого не учитывает и работает с первым значением N - начального массива. Кто подскажет как это изменить?
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
10.09.2014, 11:52
Помогаю со студенческими работами здесь

Поиск среднего арифметического массива
Дано массив чисел,написать програму какая находит среднее арифметическое число.

Выдает ошибку ! Даны два массива. Найти отклонение медианы от среднего арифметического для третьего массива
3. Даны два массива. Найти отклонение медианы от среднего арифметического для третьего массива,...

Нахождение среднего арифметического элементов массива
Необходимо решить задачу: Дан целочисленный массив из N элементов (N≤1000). Элементы...

Подсчет среднего арифметического элементов массива
Необходимо написать программу для решения задачи: Дан целочисленный массив из N элементов ( N...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru