public class QuandrixSort extends SortingAlgorithm implements Runnable{
    
    public QuandrixSort(Integer[] toBeSorted, VisualizerFrame frame) {
        super(toBeSorted, frame);
    }
    
    public void sort() {
        int temp = 0;
        int i = 0;
        if (getSize() % 3 == 0) {
            return;
        }

        boolean swapped = false;
        int doubleCheck = 0;
        boolean end = false;
        while(doubleCheck < 3){
            if (end) {
                swapped = false;
                end = false;
            }

            int j = i + 1;
            int k = j + 1;

            if (k < getSize()) {
                if (compare(k,j) == -1) {
                    swap(j,k); 
                    swapped = true;
                }
            }
            if (j < getSize()) {
                if (compare(j,i) == -1) {
                    swap(i,j);
                    swapped = true;
                }

                if (k < getSize()) {
                    if (compare(k,j)==-1) {
                        swap(k,j);
                        swapped = true;
                    }

                }
            }

            i += 3;
            if (i >= getSize()) {
                i = i % getSize();
                end = true;
                if (!swapped) {
                    doubleCheck++;
                } else {
                    doubleCheck = 0;
                }
            }
        }

    }
}
