Quicksort

    void quicksort(double[] A, int lo, int hi)
    {
      int m = (hi + lo) / 2;
      double Am = A[m];
      int il = lo;
      int ir = hi;
      do
      {
        while (A[il] < Am) il++;
        while (A[ir] > Am) ir--;
        if (il <= ir)
        {
          double mx = A[il];
          A[il] = A[ir];
          A[ir] = mx;
          il++;
          ir--;
        }
      } while (il <= ir);
      if (ir > lo) quicksort(A,lo, ir);
      if (il < hi) quicksort(A, il, hi);
    }
	
	
    void quicksort(double[] x)
    {
      quicksort(x, 0, x.Length-1);
    }