Implement Quick Sorting

juwon·2022년 6월 21일
0

Algorithms

목록 보기
3/7

퀵 정렬 구현

import java.util.Arrays;

public class Main3 {

    public static void quickSort(int[] arr, int left, int right) {
        if (left >= right){
            return;
        }

        int pivot = partition(arr, left, right);
        quickSort(arr, left, pivot -1 );
        quickSort(arr, pivot + 1, left);

    }

    public static int partition(int[] arr, int left, int right) {
    	// 가장 좌측 값을 기준값으로 설정
        // 이외에 기준 값은 배열에서 중간에 있는 값을 고르거나,
        // 임의의 수를 3개 선정 후 중앙 값을 고르는 등의 방법이 있다.
        int pivot = arr[left];
        int i = left;
        int j = right;
        
		// left에서 시작하여 pivot보다 큰 값을 찾는 과정
        while (i < j){
            while (arr[i] <= pivot && i < j){
                i++;
            }
            
        // right에서 시작하여 pivot보다 작은 값을 찾는 과정    
            while (arr[j] > pivot && i < j){
                j--;
            }
		
        // 두 값을 정렬
            swap(arr, i, j);
        }
		// i 와 j가 만난 지점에서 pivot 지점과 정렬
        swap(arr, left, i);

        return i;
    }

    public static void swap(int[] arr, int i, int j) {
        int temp = arr[i];
        arr[i] = arr[j];
        arr[j] = temp;
    }

    public static void main(String[] args) {
        int[] arr = {6, 2, 7, 9, 4, 5, 8};
        quickSort(arr, 0, arr.length - 1);
        System.out.println("퀵 정렬: " + Arrays.toString(arr));
    }
}

//출력
퀵 정렬: [2, 4, 5, 6, 7, 8, 9]

0개의 댓글