// IE Test: javac QuickSortNR.java; appletviewer QuickSortNR.html
import java.awt.*;
public class QuickSortNR extends Animate
  {	
    int partition(double a[], int l, int r)
      { int i = l-1, j = r; 
        for (;;)
          { 
            while (less(a, ++i, r)) ;
            while (less(a, r, --j)) if (j == l) break;
            if (i >= j) break;
            exch(a, i, j);
          }
        exch(a, i, r);
        return i;
      }
    void sort(double[] a, int l, int r)
      { intSTACK S = new intSTACK(50); 
        S.push(l); S.push(r);
        while (!S.empty())
          {
            r = S.pop(); l = S.pop(); 
            if (r <= l) continue;
            int i = partition(a, l, r);
            if (i-l >  r-i) { S.push(l); S.push(i-1); }
            S.push(i+1); S.push(r); 
            if (r-i >= i-l) { S.push(l); S.push(i-1); }
          }
      }
  }

