class BiDirBubbleSort extends SortAlgorithm {
    void sort(int a[]) {
		int j;
		int limit = a.length;
		int st = -1;
		
		while (st < limit) {
		    boolean flipped = false;
		    st++;
		    limit--;
		    for (j = st; j < limit; j++) {
				if (a[j] > a[j + 1]) {
					swap(a,j,j+1);
				    flipped = true;
				}
		    }
		    if (!flipped) return;
		    for (j = limit; --j >= st;) {
				if (a[j] > a[j + 1]) {
					swap(a, j, j+1);
				    flipped = true;
				}
		    }
		    pause();
		    if (!flipped) return;
		}
    }
}

