Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > comp.lang.c > #144264

Re: qsort() standard functions

From Tim Rentsch <tr.17687@z991.linuxsc.com>
Newsgroups comp.lang.c
Subject Re: qsort() standard functions
Date 2019-06-01 05:22 -0700
Organization A noiseless patient Spider
Message-ID <86k1e5h4wm.fsf@mailhub.linuxsc.com> (permalink)
References (8 earlier) <20190427144733.63852ec695135de51c951373@gmail.com> <pvk8cedubu1tmovs4vhndi1k5nmc2oqjtv@4ax.com> <20190502145240.03216d54fb7c1449b1f2fff7@gmail.com> <864l6ajoiy.fsf@mailhub.linuxsc.com> <20190505225710.1bbec8de5683cf1261ca7b33@gmail.com>

Show all headers | View raw


Anton Shepelev <anton.txt@gmail.com> writes:

> Tim Rentsch to Anton Shepelev:
>
>>> You mean reliance of tail-call optimisation?  I dislike
>>> it for readability.  Recursive code is compiled into
>>> iterative machine code.  This is misleading.
>>
>> I find this reaction rather quaint.  It reminds me of
>> times when oldtimers advised new programmers to use shifts
>> and ands rather than dividing or remaindering by a power
>> of two.
>
> Well, this is not the same.  If my purpose is to multiply an
> integer by two and the operation is not part of a
> performace-critical section of code, I will write:
>
>                         a2 = a * 2;
>
> `a2 = a >> 1' would only thwart readability because it would
> express not the intent but a hardware-specific detail.  If,
> however, my purpose is to shift a bit battern, I will write:
>
>                       a_shf = a >> 1;
>
> Code is written for the human reader and must reflect the
> vision and intent of the programmer to facilitate
> understanding.

This statement is at odds with your idea of how to
write a quicksort function.

>> Optimizing tail calls, especially in cases like this one
>> where the function is calling itself, is one of the
>> easiest transformations to make, and any decent compiler
>> will do so.
>
> Similarly, I do not object if compilers perform tail-call
> optimisation, for it lets the programmer not to rewrite
> conceptually recursive code into a interative form,
> sacrifing readability for performance.  But I find my
> iterative implementation of QuickSort clearer than than the
> "one-legged" version mixing recusion and iteration.  The
> simplest form with two recursive calls is the most readable
> but its stack usage is unfortunately not limited to log(n).

It will be, with a simple test for which branch to do
first, in the presence of tail-call optimization.  Any
decent compiler will effect the tail-call optimization
in an easy case like this one.

Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

qsort() standard functions rick.c.hodgin@gmail.com - 2019-04-24 09:08 -0700
  Re: qsort() standard functions gazelle@shell.xmission.com (Kenny McCormack) - 2019-04-24 16:12 +0000
    Re: qsort() standard functions rick.c.hodgin@gmail.com - 2019-04-24 09:18 -0700
      Re: qsort() standard functions Chad <cdalten@gmail.com> - 2019-05-02 12:02 -0700
    Re: qsort() standard functions Real Troll <real.troll@trolls.com> - 2019-04-24 22:30 -0400
      Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 19:32 -0700
        Re: qsort() standard functions Jorgen Grahn <grahn+nntp@snipabacken.se> - 2019-04-25 10:19 +0000
          Re: qsort() standard functions rick.c.hodgin@gmail.com - 2019-04-25 04:09 -0700
            Re: qsort() standard functions Richard Damon <Richard@Damon-Family.org> - 2019-04-25 08:13 -0400
              Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-25 06:39 -0700
              Re: qsort() standard functions already5chosen@yahoo.com - 2019-04-25 07:23 -0700
      Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-25 00:39 -0700
        Re: qsort() standard functions Real Troll <Real.Troll@Trolls.com> - 2019-04-25 23:27 +0100
  Re: qsort() standard functions John Bode <jfbode1029@gmail.com> - 2019-04-24 09:34 -0700
    Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 09:47 -0700
    Re: qsort() standard functions John Bode <jfbode1029@gmail.com> - 2019-04-24 09:47 -0700
      Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 12:54 -0400
        Re: qsort() standard functions John Bode <jfbode1029@gmail.com> - 2019-04-24 11:33 -0700
          Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 14:41 -0400
            Re: qsort() standard functions John Bode <jfbode1029@gmail.com> - 2019-04-24 11:52 -0700
              Re: qsort() standard functions gazelle@shell.xmission.com (Kenny McCormack) - 2019-04-24 19:12 +0000
              Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 16:05 -0400
                Re: qsort() standard functions queequeg@trust.no1 (Queequeg) - 2019-04-24 20:39 +0000
            Re: qsort() standard functions James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-04-24 16:33 -0700
      Re: qsort() standard functions gazelle@shell.xmission.com (Kenny McCormack) - 2019-04-24 19:18 +0000
        Re: qsort() standard functions Bart <bc@freeuk.com> - 2019-04-24 20:28 +0100
          Re: qsort() standard functions gazelle@shell.xmission.com (Kenny McCormack) - 2019-04-24 21:27 +0000
        Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 12:31 -0700
        Re: qsort() standard functions John Bode <jfbode1029@gmail.com> - 2019-04-24 13:02 -0700
          Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 13:41 -0700
            Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 14:00 -0700
              Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-04-25 00:22 +0300
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 15:04 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 15:20 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 15:40 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 15:57 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 16:06 -0700
                Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-04-25 23:49 +0300
                Re: qsort() standard functions Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-25 22:45 +0100
                Re: qsort() standard functions Bart <bc@freeuk.com> - 2019-04-25 23:00 +0100
                Re: qsort() standard functions Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-25 23:24 +0100
                Re: qsort() standard functions Real Troll <Real.Troll@Trolls.com> - 2019-04-25 23:20 +0100
                Re: qsort() standard functions Anton Shepelev <anton.txt@g{oogle}mail.com> - 2019-04-26 13:06 +0300
                Re: qsort() standard functions Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-26 13:38 +0100
                Re: qsort() standard functions Anton Shepelev <anton.txt@g{oogle}mail.com> - 2019-04-26 16:43 +0300
                Re: qsort() standard functions Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-26 17:46 +0100
                Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-04-27 14:55 +0300
                Re: qsort() standard functions Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-04-27 14:59 +0100
                Re: qsort() standard functions Robert Wessel <robertwessel2@yahoo.com> - 2019-04-27 11:41 -0500
                Re: qsort() standard functions Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-05-02 09:46 -0700
                Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-05-02 20:35 +0300
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-05-02 15:35 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-05-05 04:39 -0700
                Re: qsort() standard functions Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-05-04 07:35 -0700
                Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-05-05 00:01 +0300
                Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-05-02 15:11 +0300
                Re: qsort() standard functions Ben Bacarisse <ben.usenet@bsb.me.uk> - 2019-05-02 16:36 +0100
                Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-04-27 14:47 +0300
                Re: qsort() standard functions Robert Wessel <robertwessel2@yahoo.com> - 2019-04-27 08:30 -0500
                Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-05-02 14:52 +0300
                Re: qsort() standard functions Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-05-04 07:13 -0700
                Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-05-05 22:57 +0300
                Re: qsort() standard functions David Brown <david.brown@hesbynett.no> - 2019-05-06 10:09 +0200
                Re: qsort() standard functions Tim Rentsch <tr.17687@z991.linuxsc.com> - 2019-06-01 05:22 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-25 17:09 -0700
                Re: qsort() standard functions Bart <bc@freeuk.com> - 2019-04-26 10:58 +0100
                Re: qsort() standard functions mark.bluemel@gmail.com - 2019-04-26 03:59 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-26 06:34 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-26 07:16 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-26 07:45 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-26 08:29 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-26 12:06 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-26 13:09 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-26 13:37 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-26 14:05 -0700
                Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-04-27 14:59 +0300
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-27 06:19 -0700
                Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-27 06:32 -0700
  Re: qsort() standard functions Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-04-24 10:54 -0600
    Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 10:10 -0700
    Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-04-25 00:06 +0300
  Re: qsort() standard functions scott@slp53.sl.home (Scott Lurndal) - 2019-04-24 17:37 +0000
    Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 10:56 -0700
      Re: qsort() standard functions Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2019-04-24 12:12 -0600
        Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 14:27 -0400
          Re: qsort() standard functions John Bode <jfbode1029@gmail.com> - 2019-04-24 11:44 -0700
            Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 11:57 -0700
              Re: qsort() standard functions fir <profesor.fir@gmail.com> - 2019-04-24 12:04 -0700
            Re: qsort() standard functions nobody@example.org (Scott) - 2019-04-25 01:16 +0000
              Re: qsort() standard functions James Kuyper <jameskuyper@alumni.caltech.edu> - 2019-04-24 21:38 -0400
  Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 14:42 -0400
    Re: qsort() standard functions David Brown <david.brown@hesbynett.no> - 2019-04-24 22:13 +0200
    Re: qsort() standard functions queequeg@trust.no1 (Queequeg) - 2019-04-24 20:46 +0000
  Re: qsort() standard functions jadill33@gmail.com - 2019-04-24 14:01 -0700
  Re: qsort() standard functions "Rick C. Hodgin" <rick.c.hodgin@gmail.com> - 2019-04-24 15:41 -0700
  Re: qsort() standard functions "Mr. Man-wai Chang" <toylet.toylet@gmail.com> - 2019-04-26 22:24 +0800
    Re: qsort() standard functions Anton Shepelev <anton.txt@gmail.com> - 2019-05-02 15:05 +0300
      Re: qsort() standard functions "Mr. Man-wai Chang" <toylet.toylet@gmail.com> - 2019-05-03 17:02 +0800
        Re: qsort() standard functions Chad <cdalten@gmail.com> - 2019-05-03 10:10 -0700
          Re: qsort() standard functions "Mr. Man-wai Chang" <toylet.toylet@gmail.com> - 2019-05-04 01:22 +0800
            Re: qsort() standard functions Chad <cdalten@gmail.com> - 2019-05-03 15:14 -0700
              [OT]Eternal.... programmer? "Mr. Man-wai Chang" <toylet.toylet@gmail.com> - 2019-05-04 06:20 +0800
                Re: [OT]Eternal.... programmer? Chad <cdalten@gmail.com> - 2019-05-04 05:53 -0700

csiph-web