Сообщение Re: std::sort и приближенный предикат от 28.01.2016 10:31
Изменено 28.01.2016 10:34 Evgeny.Panasyuk
Здравствуйте, Went, Вы писали:
W>Казалось бы все просто — std::sort с предикатом. Но проблема в том, что результат вызова этого предиката приближенный (в силу погрешностей fast floating point model), и иногда начинается дребезг, приводящий к тому, что алгоритм сходит с ума и ругается ассертами (я так понимаю, нарушается транзитивность).
Как вариант сделать свой алгоритм, который "приблизительно" сортирует. Насколько я вижу quicksort в качестве базы тут подойдёт.
Но, опять таки, важно для чего тебе изначально нужна сортировка.
W>Казалось бы все просто — std::sort с предикатом. Но проблема в том, что результат вызова этого предиката приближенный (в силу погрешностей fast floating point model), и иногда начинается дребезг, приводящий к тому, что алгоритм сходит с ума и ругается ассертами (я так понимаю, нарушается транзитивность).
Как вариант сделать свой алгоритм, который "приблизительно" сортирует. Насколько я вижу quicksort в качестве базы тут подойдёт.
Но, опять таки, важно для чего тебе изначально нужна сортировка.
Re: std::sort и приближенный предикат
Здравствуйте, Went, Вы писали:
W>Казалось бы все просто — std::sort с предикатом. Но проблема в том, что результат вызова этого предиката приближенный (в силу погрешностей fast floating point model), и иногда начинается дребезг, приводящий к тому, что алгоритм сходит с ума и ругается ассертами (я так понимаю, нарушается транзитивность).
Как вариант сделать свой алгоритм, который "приблизительно" сортирует. Насколько я вижу quicksort в качестве базы тут подойдёт (естественно без использования трюков типа guard element и т.п.).
Но, опять таки, важно для чего тебе изначально нужна сортировка.
W>Казалось бы все просто — std::sort с предикатом. Но проблема в том, что результат вызова этого предиката приближенный (в силу погрешностей fast floating point model), и иногда начинается дребезг, приводящий к тому, что алгоритм сходит с ума и ругается ассертами (я так понимаю, нарушается транзитивность).
Как вариант сделать свой алгоритм, который "приблизительно" сортирует. Насколько я вижу quicksort в качестве базы тут подойдёт (естественно без использования трюков типа guard element и т.п.).
Но, опять таки, важно для чего тебе изначально нужна сортировка.