Go rant

Andrei Alexandrescu SeeWebsiteForEmail at erdani.org
Mon Dec 21 09:59:13 PST 2009


Daniel de Kok wrote:
> On 2009-12-18 20:39:08 +0100, Walter Bright <newshound1 at digitalmars.com> 
> said:
>> Ain't that cool? But look closer. The advantage of quicksort is that 
>> it is an *in-place* sort. The Haskell one creates new arrays for every 
>> state in the sort.
> 
> But it does have one nice property: due to laziness, the n-th elements 
> of the sorted array can be found without sorting the full array (except 
> of course, the largest two n's).

According to what I've read while looking into the subject, whether the 
concatenations are lazy or not depends on the language and a number of 
implementation vagaries.

Even assuming perfect, overhead-free laziness and ignoring the cost of 
all allocations and concatenations, in the worst case (reverse sorted 
array) just seeing the top 1 smallest element requires O(n*n) work. It's 
an uphill battle finding anything good about functional qsort. It's bad 
through and through.

(For solving the selection problem there are better methods - all use 
mutation and are very difficult to express in a functional language.)


Andrei



More information about the Digitalmars-d mailing list