Thibstars icon

QuickSort

Thibstars | PRO | 09/21/16 12:38:20 PM UTC | 0 ⭐ | 301 👁️ | Never ⏰ | []
Java |

1.84 KB

|

None

|

0 👍

/

0 👎

public class QuickSort {
    private Comparable[] comparables;
    private int number;
 
    public void sort(Comparable[] values) {
        //Check for empty or null array
        if (values ==null || values.length==0){
            return;
        }
        this.comparables = values;
        number = values.length;
        quicksort(0, number - 1);
    }
 
    private void quicksort(int low, int high) {
        int i = low, j = high;
        //Get the pivot element from the middle of the list
        Comparable pivot = comparables[low + (high-low)/2];
 
        //Divide into two lists
        while (i <= j) {
            //If the current value from the left list is smaller then the pivot
            // element then get the next element from the left list
            while (comparables[i].compareTo(pivot) < 0) {
                i++;
            }
            //If the current value from the right list is larger then the pivot
            // element then get the next element from the right list
            while (comparables[j].compareTo(pivot) > 0) {
                j--;
            }
 
            //If we have found a values in the left list which is larger then
            // the pivot element and if we have found a value in the right list
            // which is smaller then the pivot element then we exchange the
            // values.
            // As we are done we can increase i and j
            if (i <= j) {
                exchange(i, j);
                i++;
                j--;
            }
        }
        //Recursion
        if (low < j)
            quicksort(low, j);
        if (i < high)
            quicksort(i, high);
    }
 
    private void exchange(int i, int j) {
        Comparable temp = comparables[i];
        comparables[i] = comparables[j];
        comparables[j] = temp;
    }
}

Comments