[xquery-talk] fn:sort: sort for strings in descending order

Christian Grün christian.gruen at gmail.com
Fri Dec 4 02:52:44 PST 2015


Rob, Michael,

Thanks for your enlightening answers. The hint to fn:reverse was
helpful – I completely missed it – and I was not aware of the
punched-card technique (I overlooked that sort is stable).

One more use I case had in mind were top-k queries:

  fn:sort(...)[position() = 1 to 5]

>From the implementation point of view, such patterns can be sped up
with a min heap. I now realize that the heap can simply be replaced
with a max heap if an fn:sort call is wrapped by fn:reverse.

Christian
__________________________________

On Fri, Dec 4, 2015 at 11:21 AM, Michael Kay <mike at saxonica.com> wrote:
>>
>> PS. The composite sort key is another tough cookie to crumble. I feel
>> challenged.
>>
>
> Because fn:sort produces a stable sort, one can always go back to the old punched-card technique of doing multiple sorts, in minor-to-major key order:
>
> $places => sort(function($x){$x!city}) => reverse() => sort(function($x){$x!country})
>
> Michael Kay
> Saxonica



More information about the talk mailing list