Алгоритм сортировки по сложному условию.

SiMM

Новичок
> Вот не поленился и подставил. Вышло именно так, как и ожидалось.
Начнём с того, что функцию сравнения вы упростили. Она должна возвращать 0 (равно), 1 (больше) или -1 (меньше). Что там у вас в итоге получится?
PHP:
return w>sid.w + 1e-9 ? 1 : (w<sid.w+1e-9 ? -1 : 0);
В итоге получаем, что 1e-10 < 0

> Она может и да, но автору - нет.
Мало того, что не вам решать - но может всё же хватит ерунду нести? Я понимаю, что мои аргументы не столь убедительны - может кто более красноречивый сможет Вам втолковать, что Вы не правы. А я пожалуй воздержусь. Нет смысла переливать из пустого в порожнее.
 

rotoZOOM

ACM maniac
Начнём с того, что функцию сравнения вы упростили. Она должна возвращать 0 (равно), 1 (больше) или -1 (меньше). Что там у вас в итоге получится?
Ваша неправда. Советую почитать мануал по STL. Функция сравнения для sort (а не qsort) должна возвращать bool. True в случае если первый сравниваемый элемент должен точно стоять раньше второго, и false во всех других случаях.
Мало того, что не вам решать - но может всё же хватит ерунду нести? Я понимаю, что мои аргументы не столь убедительны - может кто более красноречивый сможет Вам втолковать, что Вы не правы. А я пожалуй воздержусь. Нет смысла переливать из пустого в порожнее.
Согласен :) Это уже похоже на флуд. Но на тему eps все равно каждый из нас останется при своем мнении. :)
 

SiMM

Новичок
> Ваша неправда. Функция сравнения для sort (а не qsort) должна возвращать bool.
Возможно. Сути это не меняет. При сравнении 1e-10 с 0 всё равно возвращается неверный результат (false), интерпретируемый как 1e-10<=0.
PHP:
                        // a.sid = sid 
$w = 1e-10;             // w = 1e-10 
$sid = 0;               // sid.w = 0 
var_dump($w>$sid);      // true - w>sid.w 
var_dump($w>$sid+1e-9); // false - w<=sid.w
 

rotoZOOM

ACM maniac
SiMM Продолжаем вчерашний разговор ? :))))
Мы говорим о разных вещах. Вы о точности сравнения уже готовых данных без учета погрешности вычисления этих данных, а я о сравнение с учетом погрешности вычисления.
Давайте я признаю, что был не прав, так как учел в сравнении для сортировки еще погрешность, а автору, как оказалось, на это положить ржавый болт с правой резьбой.
И на этом можно закончить дискуссию в этой теме, а ? :))

<offtop>
P.S. да еще и самолет этот упал .....
</offtop>
 

StUV

Rotaredom
rotoZOOM
Вы о точности сравнения уже готовых данных без учета погрешности вычисления этих данных
вся бессмысленность спора в том, что ограничение точности вычисления данных должно иметь место там, где данные вычисляются - там где данные упорядочиваются _всегда_ надо исходить из "конечности представления данных"

т.е. - всему свое время и место ;)
 

phprus

Moderator
Команда форума
StUV
Согласен.

Еще раз всем спасибо за помощь. И за такую простую функцию сравнения до которой я недодумался.
 
Сверху