home *** CD-ROM | disk | FTP | other *** search
/ Frozen Fish 2: PC / frozenfish_august_1995.bin / bbs / d07xx / d0713.lha / ICalc / Scripts / sort.ic < prev    next >
Text File  |  1992-08-19  |  410b  |  18 lines

  1. # This is the Shell-sort, probably best for smallish arrays.
  2. # Sorts by real part.
  3. # nb: routines assume array base is 1
  4.  
  5. func swap(*a, *b) = { local t; t = a; a = b; b = t; }
  6.  
  7. func sort(@a) = {
  8.     local n, gap, k, j
  9.  
  10.     n = sizeof(a)
  11.  
  12.     for (gap = floor(n/2); gap > 0; gap = floor(gap*0.5))
  13.         for (k = gap; k < n; k += 1)
  14.             for (j = k-gap+1; j >= 1 && a[j] > a[j+gap]; j -= gap)
  15.                 swap(a[j],a[j+gap])
  16.     return
  17. }
  18.