Post

크래프톤 정글 주제별 탐구 -병합 정렬-

정의

병합 정렬이란, Divide and Conquer(분할 정복) 알고리즘을 기반으로 하는 정렬 방법으로, 수열을 나누어 나눈 수열들끼리 비교함으로써 진행되는 정렬 방식이다.

많은 량의 데이터가 있을 때 유리하다.

구현

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import sys

N = int(sys.stdin.readline().rstrip())
arra = []

for i in range(N):
    arra.append(int(sys.stdin.readline().rstrip()))


def mergeSort(arr):
    if (len(arr) < 2):
        return arr

    mid = len(arr) // 2
    leftArr = mergeSort(arr[:mid])
    rightArr = mergeSort(arr[mid:])

    i = j = 0

    sortedArr = []
    while i < len(leftArr) and j < len(rightArr):
        if leftArr[i] < rightArr[j]:
            sortedArr.append(leftArr[i])
            i += 1
        else:
            sortedArr.append(rightArr[j])
            j += 1

    sortedArr += leftArr[i:]
    sortedArr += rightArr[j:]

    return sortedArr

for i in mergeSort(arra):
    print(i)

관련 문제 링크

2751번

This post is licensed under CC BY 4.0 by the author.