가오리의 코딩일기

[1517] 버블 소트 본문

Python/백준

[1517] 버블 소트

류경혜 2022. 8. 22. 04:00

def mergeSort(start, end):
    global swapCount, A
    if start < end:
        mid = (start + end) // 2
        mergeSort(start, mid)
        mergeSort(mid + 1, end)
        startPoint, midPoint = start, mid + 1
        temp = []
        
        while startPoint <= mid and midPoint <= end:
            if A[startPoint] <= A[midPoint]:
                temp.append(A[startPoint])
                startPoint += 1
            else:
                temp.append(A[midPoint])
                midPoint += 1
                swapCount += (mid - startPoint + 1)
                
        if startPoint <= mid:
            temp = temp + A[startPoint:mid + 1]
        if midPoint <= end:
            temp = temp + A[midPoint:end + 1]
        for i in range(len(temp)):
            A[start + i] = temp[i]

swapCount = 0
n = int(input())
A = list(map(int, input().split()))
mergeSort(0, n - 1)
print(swapCount)

'Python > 백준' 카테고리의 다른 글

[1992] 쿼드트리  (0) 2022.08.22
[4963] 섬의 개수  (0) 2022.08.22
[11729] 하노이 탑 이동 순서  (0) 2022.08.22
[11725] 트리의 부모 찾기  (0) 2022.08.22
[1780] 종이의 개수  (0) 2022.08.21