kkkkkkkkkkkk
kkkkk
kkkkkkkkkkkk
전체 방문자
오늘
어제
  • 분류 전체보기
    • CS & OS
    • Algorithms
    • Laguage
    • Book
      • 객체지향의 사실과 오해
      • Effective Java
      • Spring boot 와 AWS로 혼자 구현하는 ..
      • 도메인 주도 계발 시작하기
    • DB
    • Spring
    • Spring Boot
    • JPA
    • Git
    • Clean Code
    • HTTP

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 책임
  • 응집도
  • 설계 원칙
  • 결합도
  • 객체지향 프로그래밍
  • 역할

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
kkkkkkkkkkkk

kkkkk

Algorithms

[Sort] 퀵 정렬 (Quick Sort)

2022. 6. 26. 22:57

소개

  • Pivot 기준으로 정렬을 진행한다.
  • 앞서 배운 정렬들에 비해 빠른 속도를 가진다.
  • 시간 복잡도는 평균적으로 O(nlogn) 을 가진다. 하지만 최악일 경우엔 O(n2) 을 가진다.

 

동작원리

  • 배열 안에 기준이 될 원소를 선택 → Pivot
  • Pivot을 기준으로 pivot 보다 작은 원소는 모두 왼쪽으로 옮기고 큰 원소는 모두 오른쪽으로 옮겨 분할 과정을 거친다.
  • pivot 을 제외한 왼쪽 배열과 오른쪽 배열의 리스트를 정렬한다.
    • 분할된 배열을 가지고 위의 순서를 더이상 분할이 안될 때 까지 반복한다.

 

구현코드

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

    int i = left;
    int j = right;

    int pivot = arr[(left + right) / 2];

    while (i < j) {
        while (arr[i] < pivot) {
            i++;
        }

        while (arr[j] > pivot) {
            j--;
        }

        if (i >= j) {
            break;
        }

        if (arr[i] == pivot && arr[j] == pivot) {
            i++;
            continue;
        }

		swap(arr, i, j);
    }

	sort(arr, left, i - 1);
	sort(arr, i + 1, right);
}

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

 

'Algorithms' 카테고리의 다른 글

[Tree] 트리  (0) 2022.07.10
[Sort] 병합 정렬 (Merge Sort)  (0) 2022.06.26
[Sort] 셸 정렬 (Shell Sort)  (0) 2022.06.26
[Sort] 삽입 정렬 ( Insertion Sort)  (0) 2022.06.26
[Sort] 선택 정렬 (Selection Sort)  (0) 2022.06.26
[Sort] 버블 정렬 (Bubble Sort)  (0) 2022.06.26
[Sort] 선형 탐색 (Linear Search)  (0) 2022.06.26
[JAVA] 해싱 동작 방식  (0) 2022.01.17
    'Algorithms' 카테고리의 다른 글
    • [Tree] 트리
    • [Sort] 병합 정렬 (Merge Sort)
    • [Sort] 셸 정렬 (Shell Sort)
    • [Sort] 삽입 정렬 ( Insertion Sort)
    kkkkkkkkkkkk
    kkkkkkkkkkkk

    티스토리툴바