Boost logo

Boost :

From: Michael Lacher (michael.lacher_at_[hidden])
Date: 2007-03-19 09:07:13


Sam Schetterer wrote:
> Hi. Since people want the sorting library to have something that the
> standard library sorts do not offer, I would like to know the most
> complicated sorting situations that user have encountered (like sort by
> name, and then first three digits of phone number, and if the sum of the
> first three digits of the phone number is less than 10, sort by the second 4
> digits of the phone number). I ask this because radixsort and radix
> quicksort are able to do those sorts, but I need input from users to add
> features. Also, even if you do not have any complicated sorts, ideas in
> general would help.
> _______________________________________________
> Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
>

Functionality that i would find useful (roughly sorted form most to
least important):

* provide an easy way to sort lists of pointers (without having to make
a custom '<' operator each time).* Easy way to specify different
comparison operators for various subfields. ie. in stead of one complex
'<' operator, specify one for each subfield and then define sortorder
(which subfield first, ...) on sorttime.
* provide a good set of default '<' operators. at least:
   - simple types (strings, numbers, ...)
   - pointers to simple types
   - pairs of the above
* Specify ascending vs. descending sorting. Trivial criteria really, but
reduces complexity (or number) of the '<' operators.
* return the n highest/lowest only. (optimized, ie: not full sort and
then cutting solution)

A complicated sort example i came across:

* The datatype is a struct of vectors of strings
* The criterium is the same dataype.
* sort according to how good the vectors of strings correlate in the
list values and the criterium (many same values).

Another sort example from a different domain:

Take a set of points in 3d space. sort them (anti-)clockwise around a
given point. sort them according to the length along a path. Both of
these would need to associate a "sort value" with each point in a first
pass to be able to sort efficient. This can be left to the user, but
could also be handled by a library since the rest (establishing a 1-1
relationship of "sort value" and actual value and sorting) is the same
in each application.

regards,
Michael


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk