AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.10.2015, 12:45   #1  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Поиск медианы
Добрый день.

Спешу поделиться алгоритмом поиска медины.

Немного теории:
Медиан - возможное значение признака, которое делит ранжированную совокупность (вариационный ряд выборки) на две равные части: 50 % «нижних» единиц ряда данных будут иметь значение признака не больше, чем медиана, а «верхние» 50 % — значения признака не меньше, чем медиана.

Немного практики:
Логика выполнения:
- Отсортировать массив;
- Если кол-во чисел четное, то найти среднее между серединными ячейками массива;
- Если кол-во числе не четное, то взять серединную ячейку.
X++:
static real con2median(container _con)
{
    container   con;
    int         lenCon = conLen(_con),
                i;
    real        ret;
    anytype     any;
    ;
    for(i = 1; i <= lenCon; i++)
    {
        any = conPeek(_con, i);
        con +=  any2real(any);
    }
    con = quickSort(con);
    
    info(con2Str_NV(con, '\n'));

    if(lenCon mod 2 == 0)
    {
        ret = conPeek(con, trunc(lenCon / 2));
        ret += conPeek(con, trunc(lenCon / 2) + 1);
        ret = ret / 2;
    }
    else
    {
        ret = conPeek(con, trunc(lenCon / 2));
    }

    return ret;
}
Код метода quickSort взят от сюда --> Сортировка контейнеров


Я использую контейнер, т.к. при поиске медианы важны все данные. Set и Map убирает дубликаты.

Друзья, если есть идеи по улучшению алгоритмы, то говорите. Буду рад узнать что-то новое.
За это сообщение автора поблагодарили: AP-1055D (1).
Теги
axapta, медиана, ax2009

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Как сделать в lookup поиск по нескольким полям Jurezzz DAX: Программирование 6 31.05.2013 10:45
Поиск набором в выпадающем списке.. propeller DAX: Программирование 0 04.04.2011 17:31
"поиск" braathe DAX: Программирование 6 24.03.2006 13:07
Поиск по подстроке JohNick DAX: Программирование 8 06.03.2004 22:24
Поиск по полю временной таблицы Swetik DAX: Программирование 2 10.12.2003 11:35

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 21:20.