// 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); } } } }