qsort switching to insertsort

Mitchell mitchell at wyatt672earp.force9.co.uk
Sun Nov 27 12:47:47 UTC 2016


In "Numerical Recipes" (Press, Teukolsky, Vetterling & Flannery) the 
Partitioning Element chosen is the median of the First, Middle & Last. They 
mention other techniques too.

On Sunday 27 November 2016 04:17:02 Tristan Verniquet wrote:
> From: Mehmet Erol Sanliturk <m.e.sanliturk at gmail.com>
> Sent: Sunday, 27 November 2016 5:51 AM
> To: Arne Dag Fidjestøl
> Cc: Tristan Verniquet; Hans Petter Selasky; freebsd hackers
> Subject: Re: qsort switching to insertsort
> 
> 
> 
> On Sat, Nov 26, 2016 at 9:14 AM, Arne Dag Fidjestøl <adf at idi.ntnu.no> wrote:
> 
> > On 26 Nov 2016, at 15:35, Mehmet Erol Sanliturk <m.e.sanliturk at gmail.com> 
wrote:
> >
> > In quick sort , it is necessary to check worst case and switch to another
> > sort method if it is detected .
> > When this is not done , end result is stack overflow , etc . , but not
> > success .
> > Therefore , it is not possible to eliminate an alternative sort method .
> 
> I you sort the smaller partition recursively first, and then sort the larger 
partition either by tail recursion or iteration, you will only consume O(log 
n) of stack, so stack overflow needn’t be an issue, regardless of the input.
> 
> -adf
> 
> 
> 
> Important problem is caused by almost sorted values . Myself , I am counting 
the sorted elements first , if they exceed a large percentage of number of all 
elements , then I am switching to an alternative sort , otherwise a quick sort 
is used .  This is for a simple application .
> 
> In an operating system , more complex algorithms may be more useful .
> 
> 
> Mehmet Erol Sanliturk
> 
> ---
> 
> It can still trigger with completely unsorted data in the top and bottom 
half, as long as it chooses the middle value for the pivot. The main reason 
nearly sorted data is vulnerable is that it is more likely to match these 
conditions, and more likely to happen in real life situations.
> 
> But this is why i don't really consider it an "edge" case, there would be a 
whole class of situations (like the one we had) where it would be very likely 
to trigger with very bad side effects.
> 
> Maybe, does anyone continue to use FreeBSD qsort while being aware of this 
implementation detail? Under what conditions/assurances?
> 
> Does anyone use FreeBSDs qsort because of this feature?
> 
> Tristan
> ________________________________
> From: Mehmet Erol Sanliturk <m.e.sanliturk at gmail.com>
> Sent: Sunday, 27 November 2016 5:51:31 AM
> To: Arne Dag Fidjestøl
> Cc: Tristan Verniquet; Hans Petter Selasky; freebsd hackers
> Subject: Re: qsort switching to insertsort
> 
> 
> 
> On Sat, Nov 26, 2016 at 9:14 AM, Arne Dag Fidjestøl 
<adf at idi.ntnu.no<mailto:adf at idi.ntnu.no>> wrote:
> 
> > On 26 Nov 2016, at 15:35, Mehmet Erol Sanliturk 
<m.e.sanliturk at gmail.com<mailto:m.e.sanliturk at gmail.com>> wrote:
> >
> > In quick sort , it is necessary to check worst case and switch to another
> > sort method if it is detected .
> > When this is not done , end result is stack overflow , etc . , but not
> > success .
> > Therefore , it is not possible to eliminate an alternative sort method .
> 
> I you sort the smaller partition recursively first, and then sort the larger 
partition either by tail recursion or iteration, you will only consume O(log 
n) of stack, so stack overflow needn’t be an issue, regardless of the input.
> 
> -adf
> 
> 
> 
> Important problem is caused by almost sorted values . Myself , I am counting 
the sorted elements first , if they exceed a large percentage of number of all 
elements , then I am switching to an alternative sort , otherwise a quick sort 
is used .  This is for a simple application .
> 
> In an operating system , more complex algorithms may be more useful .
> 
> 
> Mehmet Erol Sanliturk
> 
> 
> 
> _______________________________________________
> freebsd-hackers at freebsd.org mailing list
> https://lists.freebsd.org/mailman/listinfo/freebsd-hackers
> To unsubscribe, send any mail to "freebsd-hackers-unsubscribe at freebsd.org"



More information about the freebsd-hackers mailing list