Fixed-Length Array Sorting
Andrei Alexandrescu via Digitalmars-d
digitalmars-d at puremagic.com
Wed Apr 13 12:58:49 PDT 2016
On 04/13/2016 12:07 PM, Nordlöw wrote:
> On Tuesday, 12 April 2016 at 14:56:00 UTC, Andrei Alexandrescu wrote:
>> Also to avoid cache line thrashing, sort parallel swaps by leftmost
>> index. E.g. this line:
>>
>> 18,19, 20,21, 2,4, 1,3, 0,5, 6,8, 7,9, 10,12, 11,13,
>>
>> becomes:
>>
>> 0,5, 1,3, 2,4, 6,8, 7,9, 10,12, 11,13, 18,19, 20,21,
>>
>>
>> Andrei
>
> Done.
No time but couple more remarks:\
* Cut and paste error at
https://github.com/nordlow/phobos-next/blob/master/src/sortn.d#L90
* I see some sizes are not supported, we should not have holes.
* Sometimes the sort routine gets too bulky. Suggestion: also define
networks for medianOfUpTo and medianExactly, then use them in a
quicksort manner - first compute the median to segregate values in
below/over the median, then make two calls to sortExactly!(n / 2). That
way you get to sort n values with median of n values (smaller and
simpler) and two sorts of n / 2 values.
I think this is great work in the making. We should be able at some
point to plug this into std.sort.
Andrei
More information about the Digitalmars-d
mailing list