/*---------------------------------------------------------------------   
  The function sort sorts an array of n doubles in place
  Arguments:
	 z   - double *   pointer to the array of doubles to be sorted
	 n   - long       number of elements in z
-----------------------------------------------------------------------*/
void sort(double *z,long n)
{
  long nodd,i,j,j1,j2,k;
  double v;

  nodd = n - 1;

  for(i=0;i<nodd;i++)
     {if(z[i] > z[i+1])
	{v = z[i + 1];
	 if(z[0] >= v)k = -1;
	 else 
	   {j1 = 0;
	    j2 = i;
	    k = i / 2;
	    while(z[k] != v) 
	      {k = (j1 + j2) / 2;
	       if(k == j1)break;
               else
		 {if(z[k] > v)j2 = k;
		  else if(z[k] < v)j1 = k; }
              } 
            }
         for(j=i;j>k;j--)z[j + 1] = z[j];
         z[k + 1] = v; 
        }
     }
}
