CS/알고리즘

Merge Sort in Python (병합 정렬)

위대한루루 2020. 6. 9. 18:25
import sys


def mergeSort(A, s, e):
	half = (s+e) // 2
	mergeSort(A, s, half)
	mergeSort(A, half+1, e)
	merge(A, s, half, e)


def merge(A, s, half, e):
	tmp = []
	i = s
	j = half+1
	while i <= half and j <= e:
		if A[i] < A[j]:
			tmp.append[A[i]]
			i += 1
	while i <= half:
		tmp.append[A[i]]
		i += 1
	while j <= e:
		tmp.append[A[j]]
		j += 1
	
	i = s
	j = 0
	while i <= e:
		A[i] = tmp[j]
		i += 1
		j += 1


sys.setrecursionlimit(10000)
A = [31, 3, 65, 73, 8, 11, 20, 29, 48, 15]
mergeSort(A, 0, len(A))
print(A)