Path: csiph.com!x330-a1.tempe.blueboxinc.net!newsfeed.hal-mli.net!feeder3.hal-mli.net!newsfeed.hal-mli.net!feeder1.hal-mli.net!border3.nntp.dca.giganews.com!Xl.tags.giganews.com!border1.nntp.dca.giganews.com!nntp.giganews.com!local2.nntp.dca.giganews.com!nntp.earthlink.com!news.earthlink.com.POSTED!not-for-mail NNTP-Posting-Date: Fri, 11 Nov 2011 19:27:20 -0600 Message-ID: <4EBDCB7A.2B15@mindspring.com> Date: Fri, 11 Nov 2011 20:27:22 -0500 From: pete Reply-To: pfiland@mindspring.com Organization: PF X-Mailer: Mozilla 3.04Gold (WinNT; I) MIME-Version: 1.0 Newsgroups: comp.lang.c Subject: Re: qsort References: <4ebd2a87$0$19698$bbae4d71@news.suddenlink.net> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 58 X-Usenet-Provider: http://www.giganews.com NNTP-Posting-Host: 4.154.218.90 X-Trace: sv3-fKqxdP149+W4+w4Vcy5nAKoGqPn//dSqFR3+5yJnVZUhg2oY6NWLKxdMghghts2q6bwOagXXDO0T9Ml!YCp1TlpXKfEyI9az6w+TRE41WTnTyaegdoQOUIgylwKMqQSqPqnIY4pZ26juhb8nDmCxZXw891Pz!KpcE9KYW9Q== X-Abuse-and-DMCA-Info: Please be sure to forward a copy of ALL headers X-Abuse-and-DMCA-Info: Otherwise we will be unable to process your complaint properly X-Postfilter: 1.3.40 X-Original-Bytes: 2096 Xref: x330-a1.tempe.blueboxinc.net comp.lang.c:13159 Bill Cunningham wrote: > double prices[]={24.45,24,21}; > > I want to sort them from highest to lowest. > Still not knowing C's semantics > well enough there's probably a simpler way > but what kind of function would I > want to write to pass to that last parameter of qsort? /* BEGIN output from new.c */ From highest to lowest: 24.450000 24.000000 21.000000 /* END output from new.c */ /* BEGIN new.c */ #include #include int price_comp(const void *a, const void *b) { const double *aa = a; const double *bb = b; return *aa > *bb ? -1 : *aa != *bb; } int main(void) { double prices[] = {24.45, 24, 21}; double *ptr = prices; size_t n = sizeof prices / sizeof *prices; qsort(prices, n, sizeof *prices, price_comp); puts("\n/* BEGIN output from new.c */\n"); puts("From highest to lowest:"); while (n-- != 0) { printf("%f\n", *ptr); ++ptr; } puts("\n/* END output from new.c */"); return 0; } /* END new.c */ -- pete