From: tmoran@bix.com
Subject: Re: No Go To's Forever!
Date: 2000/03/23
Date: 2000-03-23T00:00:00+00:00 [thread overview]
Message-ID: <HRkC4.1999$U95.38761@news.pacbell.net> (raw)
In-Reply-To: 8bbsc6$aes$1@nnrp1.deja.com
>Well that's a different algorithm. It tests J against D'Last
>twice as often as my formulation.
I would hardly call that a different algorithm. Rather a
different implementation of the same algorithm. But if you
want to call it different...
>Actually most compilers won't fix this, so you will find that
>your version actually does run noticably slower that the
>original.
Right. For each call on Swap and restart of the scanning, plus
one additional time, J will be compared against D'last. That's
going to be a relatively miniscule slowdown. If the data is
in order, yours does N comparisons against J and mine does N+1.
If the data is sorted backwards, the worst case, yours does
N + N*(N-1)/2 + N*(N-1)*(N-2)/6 comparisons against J and mine
does an additional N*(N-1)/2+1 That's 66% more when N=2 (5 vs 3)
declining to 3% more when N=100 (171,701 vs 166,750) and so forth.
Hardly "twice as many". And nobody who cared would use this
algorithm anyway.
>Please tackle the harder problem: Take the algorithm *I*
>presented, and remove the goto without changing the sequence
>of computations, and see if that result is clearer.
> <<Do_It_Again>>
> for J in 1 .. N - 1 loop
> if D (J) < D (J + 1) then
> Swap (D (J), D (J + 1));
> goto Do_It_Again;
> end if;
> end loop;
This should be pretty close to the same run-time sequence of machine
operations, so I hope you'll accept it as "the same algorithm".
I don't find it as clear as the "changed algorithm" method.
J := D'first;
while J < D'last loop
if D (J) >= D (J + 1) then -- sorted so far
J := J+1; -- continue
else
Swap (D (J), D (J + 1)); -- out of order, move item
J := D'first; -- and start over
end if;
end loop;
>P.S. I don't find your changed algorithm clearer, precisely
>because of the peculiar duplicated check.
Perhaps some comments would help?
loop
J := D'first;
while J < D'last and then D(J) >= D(J+1) loop -- compare
J := J+1; -- continue if in order
end loop;
exit when J >= D'last; -- If at end, we can't swap, but are done.
Swap (D (J), D (J + 1)); -- Otherwise move item
end loop; -- and start over
So gotos may be appropriate for Adventure games and other FSMs, but
a goto doesn't buy much for this sort algorithm.
next prev parent reply other threads:[~2000-03-23 0:00 UTC|newest]
Thread overview: 105+ messages / expand[flat|nested] mbox.gz Atom feed top
2000-03-21 0:00 No Go To's Forever! Bill Dale
2000-03-21 0:00 ` Charles Hixson
2000-03-21 0:00 ` Robert Dewar
2000-03-21 0:00 ` Michael P. Walsh
2000-03-21 0:00 ` Andrew Berg
2000-03-22 0:00 ` Wes Groleau
2000-03-22 0:00 ` No Go To's Forever! (I'm sorry I spoke...) dis90072
2000-03-23 0:00 ` tmoran
2000-03-23 0:00 ` Larry Kilgallen
2000-03-22 0:00 ` No Go To's Forever! Ken Garlington
2000-03-22 0:00 ` Marin D. Condic
2000-03-22 0:00 ` Roger Barnett
2000-03-22 0:00 ` Larry Kilgallen
2000-03-23 0:00 ` Robert Dewar
2000-03-23 0:00 ` Keith Thompson
2000-03-24 0:00 ` Ted Dennison
2000-03-27 0:00 ` Keith Thompson
2000-03-28 0:00 ` Come From Forever! (was: No Go To's Forever!) Ted Dennison
2000-03-29 0:00 ` Keith Thompson
2000-03-24 0:00 ` No Go To's Forever! Marin D. Condic
2000-03-25 0:00 ` Richard D Riehle
2000-03-21 0:00 ` Gautier
2000-03-22 0:00 ` Tim Gahnström
2000-03-21 0:00 ` David Starner
2000-03-22 0:00 ` tmoran
2000-03-22 0:00 ` Robert Dewar
2000-03-22 0:00 ` tmoran
2000-03-23 0:00 ` Robert Dewar
2000-03-23 0:00 ` tmoran [this message]
2000-03-23 0:00 ` Robert Dewar
2000-03-23 0:00 ` tmoran
2000-03-24 0:00 ` Robert Dewar
2000-03-24 0:00 ` Robert Dewar
2000-04-16 0:00 ` Kenneth Almquist
2000-04-17 0:00 ` Robert Dewar
2000-04-17 0:00 ` Robert Dewar
2000-04-18 0:00 ` Dale Stanbrough
2000-04-18 0:00 ` Robert Dewar
2000-04-18 0:00 ` David Starner
2000-03-23 0:00 ` Jeff Carter
2000-03-24 0:00 ` Robert Dewar
2000-03-29 0:00 ` Martin Dowie
2000-03-29 0:00 ` Robert Dewar
2000-03-29 0:00 ` Florian Weimer
2000-03-29 0:00 ` Robert Dewar
2000-03-30 0:00 ` Robert A Duff
2000-04-01 0:00 ` Robert Dewar
2000-04-01 0:00 ` Robert A Duff
2000-04-02 0:00 ` Robert Dewar
2000-04-21 0:00 ` Florian Weimer
2000-04-21 0:00 ` Robert Dewar
2000-03-29 0:00 ` Robert Dewar
2000-03-24 0:00 ` tmoran
2000-03-22 0:00 ` Robert Dewar
2000-03-22 0:00 ` Ken Garlington
2000-03-21 0:00 ` Keith Thompson
2000-03-22 0:00 ` Robert Dewar
2000-03-23 0:00 ` Ken Garlington
2000-03-22 0:00 ` Robert Dewar
2000-03-23 0:00 ` Tim Gahnstr�m
2000-03-21 0:00 ` David Starner
2000-03-21 0:00 ` Bill Dale
2000-03-22 0:00 ` Robert Dewar
2000-03-22 0:00 ` Robert Dewar
2000-03-22 0:00 ` Paul Graham
2000-03-22 0:00 ` Robert Dewar
2000-03-22 0:00 ` Michael P. Walsh
2000-03-22 0:00 ` Charles Hixson
2000-04-06 0:00 ` Wes Groleau
2000-04-07 0:00 ` Charles Hixson
2000-03-22 0:00 ` Brian Rogoff
2000-03-22 0:00 ` Ted Dennison
2000-03-22 0:00 ` Michael P. Walsh
2000-03-23 0:00 ` Robert Dewar
2000-03-22 0:00 ` Paul Graham
2000-03-23 0:00 ` Robert Dewar
2000-03-23 0:00 ` Ted Dennison
2000-03-23 0:00 ` Larry Kilgallen
2000-03-23 0:00 ` Robert Dewar
2000-03-23 0:00 ` Paul Graham
2000-03-23 0:00 ` Robert Dewar
2000-03-22 0:00 ` Robert A Duff
2000-03-22 0:00 ` Roger Barnett
2000-03-22 0:00 ` Charles Hixson
2000-03-22 0:00 ` Robert Dewar
2000-03-22 0:00 ` Richard D Riehle
2000-03-23 0:00 ` Jeff Carter
2000-03-23 0:00 ` Robert Dewar
2000-03-23 0:00 ` Michael P. Walsh
2000-03-23 0:00 ` Brian Rogoff
2000-03-22 0:00 ` Marin D. Condic
2000-03-22 0:00 ` Robert Dewar
2000-03-22 0:00 ` Robert Dewar
2000-03-22 0:00 ` Robert Dewar
2000-03-22 0:00 ` Jon S Anthony
2000-03-22 0:00 ` Roger Barnett
2000-03-23 0:00 ` Robert Dewar
2000-03-23 0:00 ` Roger Barnett
2000-03-24 0:00 ` Robert Dewar
2000-03-23 0:00 ` Robert Dewar
2000-03-22 0:00 ` Jon S Anthony
2000-03-23 0:00 ` Chris Morgan
2000-03-22 0:00 ` Pascal Obry
[not found] ` <01bf9436$9c054880$2c5101be@bthomas4663>
2000-03-23 0:00 ` Robert Dewar
2000-03-23 0:00 ` Ken Garlington
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox