home *** CD-ROM | disk | FTP | other *** search
/ NeXTSTEP 3.3 (Developer) / NeXT_Developer-3.3.iso / NextDeveloper / Examples / AppKit / SortingInAction / SelectionSort.m < prev    next >
Encoding:
Text File  |  1990-10-09  |  1.2 KB  |  50 lines

  1.  
  2. /* Selection sort is not terribly fast, but the algorithm is the easiest 
  3.  * to understand. It searchs the data set for the smallest element, and 
  4.  * puts it in the first position.  Then it seeks out the next smallest 
  5.  * element to put in the second position and so forth.  Lots and lots of 
  6.  * comparision, but very little moving. Another of the O(n^2) variety sorts.  
  7.  * As this algorithm is quite stable, it doesn't perform any better or worse 
  8.  * on sorted data.
  9.  *
  10.  * Author: Julie Zelenski, NeXT Developer Support
  11.  * You may freely copy, distribute and reuse the code in this example.  
  12.  * NeXT disclaims any warranty of any kind, expressed or implied, as to 
  13.  * its fitness for any particular use.
  14.  */
  15.  
  16.  
  17. #import "SelectionSort.h"
  18.  
  19.  
  20. @implementation SelectionSort:GenericSort
  21.  
  22.  
  23. - init;
  24. {
  25.     [super init];
  26.     sortName = "Selection Sort";
  27.     sortNum = SELECTION_SORT;
  28.     return self;
  29. }
  30.  
  31.  
  32. - sort; 
  33. {
  34.     int c,d,smallest;
  35.     
  36.     [super sort];
  37.     fcalls++;
  38.     for (c = 0 ; c < numElements-1 ; c++){
  39.         smallest = c;
  40.     for (d = c+1; d < numElements; d++){ // find smallest element
  41.         if ([self lessThan:d :smallest])
  42.             smallest = d;
  43.     }
  44.     [self swap:smallest with:c];    // swap smallest with front position
  45.     }
  46.     [self sortDone];
  47.     return self;
  48. }
  49.     
  50. @end