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] 병합 정렬 (Merge Sort)

2022. 6. 26. 22:56

소개

  • 많은 양의 데이터가 한 개가 될 때까지 반으로 분해하고 또 분해한다.
  • 그리고 다시 그 데이터를 정렬하고 병합하는 알고리즘을 병합정렬이라 한다.
  • 시간복잡도는 O(nlogn)을 가진다.

 

동작원리

  • 배열을 반으로 계속 나눈다.
  • 왼쪽배열이 오른쪽배열보다 작아질 때 병합을 시켜준다.
  • 병합할 때 정렬을 하면서 병합한다.

 

구현 코드

public void mergeSort(int[] arr, int left, int right) {
    if (left < right) {
        int middle = (left + right) / 2;
        mergeSort(arr, left, middle);
        mergeSort(arr, middle + 1, right);
        merge(arr, left, middle, right);
    }
}

private void merge(int[] arr, int left, int middle, int right) {
    int[] temp = new int[arr.length];

    int part1 = left;
    int part2 = middle + 1;
    int index = left;

    while (part1 <= middle && part2 <= right) {
        if (arr[part1] <= arr[part2]) {
            temp[index++] = arr[part1++];
        } else {
            temp[index++] = arr[part2++];
        }
    }

    while (part1 <= middle) {
        temp[index++] = arr[part1++];
    }

    while (part2 <= right) {
        temp[index++] = arr[part2++];
    }

    for (int i = 0; i <= right - left; i++) {
        arr[i + left] = temp[i + left];
    }
}

 

'Algorithms' 카테고리의 다른 글

[Tree] 트리  (0) 2022.07.10
[Sort] 퀵 정렬 (Quick 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] 퀵 정렬 (Quick Sort)
    • [Sort] 셸 정렬 (Shell Sort)
    • [Sort] 삽입 정렬 ( Insertion Sort)
    kkkkkkkkkkkk
    kkkkkkkkkkkk

    티스토리툴바