Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 28.05.2013, 17:13   #1
NEXit
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 14
По умолчанию Метод пузырька

Ребят помогите голова уже кипит 3 проги сделал на последнию уже сил нет(
Реализовать все алгоритмы сортировки, оформив решение в виде функций ввода, вывода и обработки массивов.
Дан массив из N элементов. Отсортировать по убыванию суммы модулей разностей каждого элемента со всеми остальными. Найти такой элемент из данного множества, для которого эта сумма минимальна, и саму эту сумму.
Метод пузырька
вот пример
Код:
include <cstdio>
#include <conio.h>
#include<iomanip>
void vvod(int *A,int n)
{
    int i;
    for(i = 0; i < n; ++i)
    {
        printf("Введите элемент массива A[%d]: ", i+1);
        scanf("%d",&A[i]);
    }
}
void BubbleSort (int k,int *x)
{
    int buf;
    int i,j;
    for (i=k-1;i>0;i--)
        for (j=0;j<i;j++)
            if (x[j]<x[j+1])
            {
        buf=x[j];
        x[j]=x[j+1];
        x[j+1]=buf;
    }
}
void f(int *A,int *B,int n)
{
    int i,j(0);
    for(i = 0; i < n; ++i)
    {   if (A[i]%2!=0)
        { B[j]=A[i];
            ++j;
        }
    }
    BubbleSort(j,B);
    j=0;
    for(i = 0; i < n; ++i)
    {   if (A[i]%2!=0)
        A[i]=B[j];
        ++j;
    }
}
void vyvod(int *A, int n)
{
    int i;
    printf ("[");
    for(i = 0; i < n; ++i)
        printf("%5.1d",A[i]);
    printf ("]");
}
Заранее благодарю
NEXit вне форума Ответить с цитированием
Старый 28.05.2013, 18:19   #2
NEXit
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 14
По умолчанию

Я так и не понял(
NEXit вне форума Ответить с цитированием
Старый 28.05.2013, 18:30   #3
VIK_aka_TOR
Участник клуба
 
Аватар для VIK_aka_TOR
 
Регистрация: 30.01.2011
Сообщений: 1,578
По умолчанию

запилить функцию вычисления суммы модулей разностей каждого элемента со всеми остальными. то бишь есть первый элемент , и просумировать модули |а1-а2|+|a1-a3|+|a1-a4| и т.д....
сделать ее таким образом, что бы в ней был номер элемента от которого отнимаем все остальные, затем подставить в функции сортировки не сами элементы сравнивать, а результаты этих функций (функции с ретурном должны быть) впихнуть сюда if (x[j]<x[j+1]) , примерно будет так if (sum_mod(j) < sum_mod(j+1))
пишу код не только за печеньки
VIK_aka_TOR вне форума Ответить с цитированием
Старый 28.05.2013, 20:07   #4
NEXit
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 14
По умолчанию

Может кто знает?
NEXit вне форума Ответить с цитированием
Старый 28.05.2013, 20:46   #5
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Вы о чем?
Постом выше уже все расписано.

В качестве альтернативы могу предложить дополнительный массив, куда вычислять суммы.
Решение VIK_aka_TOR оптимально по памяти, мое - по скорости.
s-andriano вне форума Ответить с цитированием
Старый 28.05.2013, 21:10   #6
NEXit
Пользователь
 
Регистрация: 06.12.2011
Сообщений: 14
По умолчанию

Цитата:
Сообщение от s-andriano Посмотреть сообщение
Вы о чем?
Постом выше уже все расписано.

В качестве альтернативы могу предложить дополнительный массив, куда вычислять суммы.
Решение VIK_aka_TOR оптимально по памяти, мое - по скорости.
Мне оптимально это решение)
NEXit вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
метод пузырька vrtp Общие вопросы C/C++ 1 18.04.2012 08:47
Метод пузырька Darknes Общие вопросы C/C++ 13 29.06.2010 14:20
Метод пузырька gennc Общие вопросы C/C++ 2 15.06.2010 17:57
Метод пузырька(c++) ioda1986 Помощь студентам 1 25.02.2010 10:42
Метод пузырька 13Anka07 Паскаль, Turbo Pascal, PascalABC.NET 1 23.05.2009 19:36