Algorithm

[Sort] Quick

빠빠담 2020. 7. 12. 16:19
반응형

youtu.be/7BDzle2n47c

youtu.be/hq4dpyuX4Uw

 

 

package algorithm.sort;

public class Quick {

    public static void quickSort(int arr[]){
        quickSort(arr, 0, arr.length-1);
    }

    public static void quickSort(int arr[], int start, int end){

        int part = partition(arr, start, end);

        if(start < part-1){
            quickSort(arr, start, part-1);
        }
        if(end > part+1){
            quickSort(arr, part+1, end);
        }

    }

    public static int partition(int arr[], int start, int end){
        int pivot = arr[start + end / 2];

        while(start < end){
            while(arr[start] < pivot){
                start++;
            }
            while(arr[end] > pivot){
                end--;
            }
            if(start < end){
                swp(arr, start, end);
                start++;
                end--;
            }
        }

        return start;
    }

    public static void swp(int arr[], int start, int end){
        int tmp = arr[start];
        arr[start] = arr[end];
        arr[end] = tmp;
    }

    public static void printArr(int[] arr){

        for(int i = 0 ; i < arr.length ; i++){
            if(i != 0) System.out.print(" -> ");
            System.out.print(arr[i]);
        }
        System.out.println();

    }

    public static void main(String[] args) {

        int[] arr = {5,3,4,1,2};

        printArr(arr);

        quickSort(arr);

        printArr(arr);

    }
}

 

 

반응형

'Algorithm' 카테고리의 다른 글

[Sort] Merge  (0) 2020.07.07
[Sort] Insertion  (0) 2020.07.07
[Sort] Bubble  (0) 2020.07.06
[Sort] Selection  (0) 2020.07.05