@@ -0,0 +1,1660 @@
+%0Apublic class Quicksort %7B%0A%0A    int%5B%5D a;%0A    %0A    public Quicksort(int%5B%5D a) %7B%0A        this.a = a;%0A    %7D%0A    %0A    public static int%5B%5D sort(int%5B%5D a) %7B%0A        Quicksort q = new Quicksort(a);%0A        q.sortPart(0, a.length -1);%0A%0A        return a;%0A    %7D%0A   %0A    // runs O(end - start) + 2 O(end-start/2) ... %0A    // so O(N logN) on average%0A    // worst case: already sorted list, O(N%5E2)%0A    private void sortPart(int start, int end) %7B%0A        if (start %3C end) %7B%0A            int q = rearrangePart(start, end);%0A            sortPart(start, q - 1);%0A            sortPart(q, end);%0A        %7D%0A    %7D%0A%0A    // runs O(N) where N = end - start%0A    private int rearrangePart(int start, int end) %7B%0A        int pivot = a%5Bend%5D;%0A        int k = start; // next index for less than pivot%0A        int n = end -1; // next for more than pivot%0A        while (k%3C=n) %7B%0A            if (a%5Bn%5D %3C= pivot && a%5Bk%5D %3E pivot) %7B%0A                swap(k,n);%0A                k ++;%0A                n --;%0A            %7D else if (a%5Bn%5D %3E pivot) %7B%0A                n --;%0A            %7D else if (a%5Bk%5D %3C= pivot) %7B%0A                k ++;%0A            %7D%0A        %7D%0A        swap(n + 1, end);%0A%0A        return n + 1;%0A    %7D%0A%0A    private void swap(int k, int n) %7B%0A        int swap = a%5Bk%5D;%0A        a%5Bk%5D = a%5Bn%5D;%0A        a%5Bn%5D = swap;%0A    %7D%0A%0A    public static void print(int%5B%5D a) %7B%0A        String s = %22%22;%0A        for(int i : a) %7B%0A            s += i + %22, %22;%0A        %7D%0A        System.out.println(s);%0A    %7D%0A%0A    public static void main(String%5B%5D args) %7B%0A        //int%5B%5D a = new int%5B%5D %7B123, 2 , 13 , 12, 2, 4, 5, 2, 3, 6%7D;    %0A        int%5B%5D a = new int%5B%5D %7B2, 5, 1, 4%7D;    %0A        print(a);%0A%0A        print(Quicksort.sort(a));%0A    %7D%0A%7D%0A

add quicksort