|
|
1.1 ! root 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
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.