--- olena/oln/utils/qsort.hh
@@ -65,10 +65,17 @@
+ ** \warning In the case where im_[j] = im_[i] the comparison
+ ** is done on the point type components (for compatibility
+ ** purpose with distributed sort).
*/
bool operator()(const point_type &i, const point_type &j)
{
- return im_[j] < im_[i];
+ if (im_[i] == im_[j])
+ for (unsigned t(0); t < point_type::dim; ++t)
+ if (i.nth(t) != j.nth(t))
+ return i.nth(t) < j.nth(t);
+ return im_[j] > im_[i];
}
Il y a un bug dans les openings ou quelque part, le cas
(im_[i] == im_[j]) n'est pas nécessaire dans la théorie.
--
Niels