TIP: Click on subject to list as thread! ANSI
echo: c_echo
to: DAVID NOON
from: KURT KUZBA
date: 1998-04-19 03:08:00
subject: Bubble And Squeak Sortin

DN> KK>   for(outer = 0; outer < end; outer++)
DN> KK>   {
DN> KK>     swap = outer;
DN> KK>     for(inner = outer; inner < elements; inner++)
DN> KK>       if((array[swap] > array[inner] && !reverse)
DN> KK>         || (array[swap] < array[inner] && reverse))
DN> Yick! Choosing your sort direction for each and every iteration!!
DN> If you must do this, why not use the following?
DN>     if (reverse ? array[swap] < array[inner]
DN>        : array[swap] > array[inner])
DN>   It is still dog slow, but it should produce better code
DN>   than what you already have.
DN>   [Especially using Borland's wonderful optimizer.]
   Right. In a working implementation, I would have two loops,
   one for forward sort, and one for reverse.
void selectionsort(int *array, int elements)
{
   int outer, inner, swap, tmp, end, reverse;
   reverse = (elements < 0) ? 1 : 0;
   elements = reverse ? -elements : elements;
   end = elements - 1;
   if(reverse)
   {
      for(outer = 0; outer < end; outer++)
      {
         swap = outer;
         for(inner = outer; inner < elements; inner++)
           if(array[swap] < array[inner])
                swap = inner;
         if(swap > outer)
         {
            tmp = array[outer];
            array[outer] = array[swap];
            array[swap] = tmp;
         }
   }
   else
   {
      for(outer = 0; outer < end; outer++)
      {
         swap = outer;
         for(inner = outer; inner < elements; inner++)
           if(array[swap] > array[inner])
                swap = inner;
         if(swap > outer)
         {
            tmp = array[outer];
            array[outer] = array[swap];
            array[swap] = tmp;
         }
      }
   }
}
> ] Give me only the facts. I grow weary of all these Truths....
---
---------------
* Origin: *YOPS ]I[* 8.4 GIG * RA/FD/FE * Milwaukee, WI (1:154/750)

SOURCE: echomail via exec-pc

Email questions or comments to sysop@ipingthereforeiam.com
All parts of this website painstakingly hand-crafted in the U.S.A.!
IPTIA BBS/MUD/Terminal/Game Server List, © 2025 IPTIA Consulting™.