# include "mosastro.h"

int sortthree (double *X, double *Y, int *Z, int N) {

  int l,j,ir,i;
  double tX, tY;
  int tZ;
  
  if (N < 2) return (1);
  l = N >> 1;
  ir = N - 1;
  for (;;) {
    if (l > 0) {
      l--;
      tX = X[l];
      tY = Y[l];
      tZ = Z[l];
    }
    else {
      tX = X[ir];
      X[ir] = X[0];
      tY = Y[ir];
      Y[ir] = Y[0];
      tZ = Z[ir];
      Z[ir] = Z[0];
      if (--ir == 0) {
        X[0] = tX;
        Y[0] = tY;
        Z[0] = tZ;
        return (1);
      }
    }
    i = l;
    j = (l << 1) + 1;
    while (j <= ir) {
      if (j < ir && X[j] < X[j+1]) j++;
      if (tX < X[j]) {
        X[i] = X[j];
        Y[i] = Y[j];
        Z[i] = Z[j];
        j += (i=j) + 1;
      }
      else j = ir + 1;
    }
    X[i] = tX;
    Y[i] = tY;
    Z[i] = tZ;
  }
  return (1);
}
