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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.10.2015, 19:14   #1  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,719 / 1204 (44) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от demianimp Посмотреть сообщение
Друзья, если есть идеи по улучшению алгоритмы, то говорите. Буду рад узнать что-то новое.
Угу. Таблица называется. С индексом.

На всякий случай напомню, что индексировать можно и временные таблицы (в любых версиях Axapta)

Ну, и идея, которую подкинул (но не развернул) belugin.

Если у Вас есть повторяющиеся значения, то для уникальности надо "подмешать" дополнительное значение. Вариантов "вагон и маленькая тележка" Ну, например так

X++:
    Set             set;
    SetEnumerator   se;
    ;

    set = new Set(types::Container);
    set.add([5, set.elements() + 1]);
    set.add([1, set.elements() + 1]);
    set.add([2, set.elements() + 1]);
    set.add([1, set.elements() + 1]);
    set.add([1, set.elements() + 1]);
    set.add([3, set.elements() + 1]);
    info(strFmt('Элементов %1', set.elements()));
    se = set.getEnumerator();
    while (se.moveNext())
    {
        info(strFmt('Значение = %1, Номер вставки = %2', conPeek(se.current(),1), conPeek(se.current(),2)));
    }
    return;

Но если вместо Set использовать индексированную таблицу будет еще проще
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...

Последний раз редактировалось Владимир Максимов; 30.10.2015 в 19:20.
За это сообщение автора поблагодарили: demianimp (1).
Старый 30.10.2015, 19:45   #2  
demianimp is offline
demianimp
Участник
 
202 / 104 (4) +++++
Регистрация: 10.10.2013
Цитата:
Сообщение от Владимир Максимов Посмотреть сообщение
Угу. Таблица называется. С индексом.

На всякий случай напомню, что индексировать можно и временные таблицы (в любых версиях Axapta)

Но если вместо Set использовать индексированную таблицу будет еще проще

Владимир Максимов , большое спасибо за разнесения.

Теперь включу нуба

А как из табличной переменой или set выдернуть медиану?
Перебирать через цикл и останавливаться на нужной записи?
Старый 31.10.2015, 06:07   #3  
macklakov is offline
macklakov
NavAx
Аватар для macklakov
 
2,347 / 996 (38) +++++++
Регистрация: 03.04.2002
Цитата:
Сообщение от demianimp Посмотреть сообщение
А как из табличной переменой выдернуть медиану?
Перебирать через цикл и останавливаться на нужной записи?
Как в обычном sql. Через count находишь количество записей, а потом while-ом отматываешь до нужной. По сравнению с quickSort должно быть гораздо быстрее искаться. Главное данные изначально в индексированную таблицу пихать, минуя стадию container-а.
__________________
Isn't it nice when things just work?
За это сообщение автора поблагодарили: mazzy (2), demianimp (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, время: 02:11.