From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on polar.synack.me X-Spam-Level: X-Spam-Status: No, score=-1.3 required=5.0 tests=BAYES_00,INVALID_MSGID autolearn=no autolearn_force=no version=3.4.4 X-Google-Language: ENGLISH,ASCII-7-bit X-Google-Thread: fac41,9a0ff0bffdf63657 X-Google-Attributes: gidfac41,public X-Google-Thread: 1108a1,9a0ff0bffdf63657 X-Google-Attributes: gid1108a1,public X-Google-Thread: 103376,4b06f8f15f01a568 X-Google-Attributes: gid103376,public X-Google-Thread: f43e6,9a0ff0bffdf63657 X-Google-Attributes: gidf43e6,public From: dewar@merv.cs.nyu.edu (Robert Dewar) Subject: Re: Why C++ is successful Date: 1998/08/16 Message-ID: #1/1 X-Deja-AN: 381668183 References: <6qfhri$gs7$1@nnrp1.dejanews.com> <35cb8058.645630787@news.ne.mediaone.net> <902934874.2099.0.nnrp-10.c246a717@news.demon.co.uk> <6r1e1a$mj$1@platane.wanadoo.fr> <6r1kt7$66g$1@hirame.wwa.com> X-Complaints-To: usenet@news.nyu.edu X-Trace: news.nyu.edu 903279727 20779 (None) 128.122.140.58 Organization: New York University Newsgroups: comp.lang.eiffel,comp.object,comp.software-eng,comp.lang.ada Date: 1998-08-16T00:00:00+00:00 List-Id: Robert Martin said When I need to write a quick sort, and don't have access to a decent sort function, then I prefer this simple structure... bool unsorted = true; for (int i=0; unsorted && i<(N-1); i++) { unsorted = false; for (int j = 0; j<(N-i-1); j++) { if (d[j] > d[j+1]) { swap(d, j); unsorted = true; } } } First of all, there is nothing "indecent" about the algorithm that I gave. It has the merit of being by far the shortest sorting algorithm in generated code. Yes, it is slow (cubic) but for small numbers who cares, and byt the way it is optimal for already sorted data (it will outperform bubble sort or simple selection sort in such a setting, because of less control overhead). As to the above algorithm, I actually find it far more contorted. I dislike the use of a flag that is tested on every loop to avoid an exit, but I perfectly well understand that some people prefer very clear preconditions on loops and do not like exits at all. Too bad that almost no compilers are clever enough to remove the additional overhead from this approach .... But the important thing is that the above algorithm is not at all the same as what I presented. I did not intend to start a thread on what is or is not the best sorting algorithm, but rather to present an example of a simple non-finite-state machine case where many people wlil find the goto clearer. I trust that Robert Martin is not under the impression that the code above is equivalent computationally (i.e. same sequence of comparisons) as what I presented!