이 기사에서 우리는 아래 주어진 문제 설명에 대한 해결책에 대해 배울 것입니다.
문제 설명 − 배열이 주어졌으므로 반복에 의한 병합 정렬 개념을 사용하여 정렬해야 합니다.
여기서 우리는 끝에 최대 요소를 배치합니다. 이것은 배열이 정렬될 때까지 반복됩니다.
이제 아래 구현에서 솔루션을 관찰해 보겠습니다 -
예
# iterative way def mergeSort(a): current_size = 1 # traversing subarrays while current_size < len(a) - 1: left = 0 # subarray being sorted while left < len(a)-1: # calculating mid value mid = left + current_size - 1 # current_size right = ((2 * current_size + left - 1, len(a) - 1)[2 * current_size + left - 1 > len(a)-1]) # Merge merge(a, left, mid, right) left = left + current_size*2 # Increasing sub array size current_size = 2 * current_size # Merge def merge(a, l, m, r): n1 = m - l + 1 n2 = r - m L = [0] * n1 R = [0] * n2 for i in range(0, n1): L[i] = a[l + i] for i in range(0, n2): R[i] = a[m + i + 1] i, j, k = 0, 0, l while i < n1 and j < n2: if L[i] > R[j]: a[k] = R[j] j += 1 else: a[k] = L[i] i += 1 k += 1 while i < n1: a[k] = L[i] i += 1 k += 1 while j < n2: a[k] = R[j] j += 1 k += 1 # Driver code a = [2,5,3,8,6,5,4,7] mergeSort(a) print("Sorted array is:") for i in range(len(a)): print (a[i],end=" ")
출력
Sorted array is 2 3 4 5 5 6 7 8
모든 변수는 로컬 범위에서 선언되며 해당 참조는 위 그림과 같습니다.
결론
이 기사에서는 반복 병합 정렬을 위한 Python 프로그램을 만드는 방법에 대해 배웠습니다.