e.den
eden.dev.log
e.den
전체 방문자
오늘
어제
  • 분류 전체보기 (57)
    • 슬기로운 취준 생활 (1)
    • Study (30)
      • Swift (7)
      • iOS (6)
      • Java (2)
      • Spring (6)
      • Algorithm (9)
    • Coding Test (8)
      • Swea (0)
      • Baekjoon (8)
      • Programmers (0)
    • 삽질기 (3)
    • 독서록 (15)
      • Clean Architecture (5)
      • Clean Code (10)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • initializer
  • MySQL
  • ios
  • RunLoop
  • CleanArchitecture
  • 프로퍼티
  • CoreAnimation
  • 부스트코스
  • CGLayer
  • UITextView
  • lombok
  • cleancode
  • compactMap
  • Algorithm
  • flatmap
  • Spring
  • java
  • 알고리즘
  • 자료구조
  • 정렬
  • 고차함수
  • swift
  • 클린아키텍처
  • reduce
  • 클린코드
  • Filter
  • mybatis
  • property
  • Map
  • lifecycle

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
e.den

eden.dev.log

[정렬] 병합 정렬(Merge Sort)
Study/Algorithm

[정렬] 병합 정렬(Merge Sort)

2020. 4. 13. 23:18

- 병합 정렬은 먼저 입력을 반으로 나눈다.

- 이렇게 나눈 전반부와 후반부를 각각 독립적으로 정렬한다.

- 마지막으로 정렬된 두 부분을 합쳐서, 즉 병합하여 정렬된 배열을 얻는다.

- 병합 정렬은 자신에 비해 크기가 반인 문제를 두 개 푼 다음, 이들을 병합하는 일을 재귀적으로 반복한다.

 

다음은 병합 정렬 알고리즘이다.

mergeSort(A[], p, r){
    if(p<r) then{
        q ← (p+r)/2;
        mergeSort(A, p, q);
        mergeSort(A, q+1, r);
        merge(A, p, q, r);
    }
}

merge(A[], p, q, r){
    정렬되어 있는 배열 A[p...q]와 A[q+1...r]을 합하여
    정렬된 하나의 배열 A[p...r]을 만든다.
}

 

병합 정렬의 시간 복잡도

따라서,

시간 복잡도는 T(n) = T(n/2) + T(n/2) + n이다.

병합 정렬의 수행 시간은 최악의 경우 O(n log n)이 된다.

'Study > Algorithm' 카테고리의 다른 글

[정렬] 힙 정렬(Heap Sort)  (3) 2020.04.14
[정렬] 퀵 정렬(Quick Sort)  (3) 2020.04.13
[정렬] 삽입 정렬(Insertion Sort)  (6) 2020.04.13
[정렬] 버블 정렬(Bubble Sort)  (3) 2020.04.13
[정렬] 선택 정렬(Selection Sort)  (3) 2020.04.13
    'Study/Algorithm' 카테고리의 다른 글
    • [정렬] 힙 정렬(Heap Sort)
    • [정렬] 퀵 정렬(Quick Sort)
    • [정렬] 삽입 정렬(Insertion Sort)
    • [정렬] 버블 정렬(Bubble Sort)
    e.den
    e.den
    문제를 본질적으로 접근하자

    티스토리툴바